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