Added support for custom types with 'toString' function

This commit is contained in:
PotatosFish 2018-04-10 19:22:11 -05:00
parent 096c4051b2
commit de7d12974f

View File

@ -629,12 +629,19 @@ inline typename std::enable_if<
template <typename C, typename T, typename Char = typename C::char_type> template <typename C, typename T, typename Char = typename C::char_type>
inline typename std::enable_if< inline typename std::enable_if<
!std::is_same<decltype(sizeof(&T::toString)), size_t>::value &&
!convert_to_int<T, Char>::value && !convert_to_int<T, Char>::value &&
!std::is_convertible<T, basic_string_view<Char>>::value && !std::is_convertible<T, basic_string_view<Char>>::value &&
!std::is_convertible<T, std::basic_string<Char>>::value, !std::is_convertible<T, std::basic_string<Char>>::value,
typed_value<C, custom_type>>::type typed_value<C, custom_type>>::type
make_value(const T &val) { return val; } make_value(const T &val) { return val; }
template <typename C, typename T>
inline typename std::enable_if<
std::is_same<decltype(sizeof(&T::toString)), size_t>::value,
typed_value<C, string_type>>::type
make_value(const T& val) {return static_cast<basic_string_view<typename C::char_type>>(val.toString());}
template <typename C, typename T> template <typename C, typename T>
typed_value<C, name_arg_type> typed_value<C, name_arg_type>
make_value(const named_arg<T, typename C::char_type> &val) { make_value(const named_arg<T, typename C::char_type> &val) {