13 #include <type_traits>
20 namespace detail_slc {
22 using comparable_t = decltype(std::declval<T>() == std::declval<T>());
33 identical_to<bool, comparable_t, T>;
35 "Source link does not implement equality operator");
38 converts_to<const Surface&, surface_method_t, T>;
41 "Source link does not have compliant referenceSurface method");
43 constexpr
static bool copyable = std::is_copy_constructible_v<T>;
44 static_assert(
copyable,
"Source link must be copy constructible");
47 std::is_default_constructible_v<T>;
49 "Source link must be default-constructible");