31template <
typename T,
typename Enable =
void>
38template <
typename T,
typename =
void>
39struct IsConvertibleType : std::false_type {};
42struct IsConvertibleType<T, std::void_t<decltype(TypeConverter<T>{})>> : std::true_type {};
45constexpr bool isConvertibleType = IsConvertibleType<T>::value;
47template <
typename T,
typename = std::enable_if_t<detail::isConvertibleType<T>>>
48[[nodiscard]]
constexpr T fromNative(
const typename TypeConverter<T>::NativeType& src) {
50 TypeConverter<T>::fromNative(src, dst);
54template <
typename T,
typename = std::enable_if_t<detail::isConvertibleType<T>>>
55[[nodiscard]]
constexpr auto toNative(
const T& src) ->
typename TypeConverter<T>::NativeType {
56 using NativeType =
typename TypeConverter<T>::NativeType;
58 TypeConverter<T>::toNative(src, dst);
Type conversion from and to native types.