Add support for types explicitly convertible to fmt::string_view

This commit is contained in:
Victor Zverovich
2018-07-18 14:12:10 -07:00
parent 6eaa507473
commit 73bed45b7a
2 changed files with 22 additions and 4 deletions

View File

@@ -672,10 +672,17 @@ inline typename std::enable_if<
typed_value<C, int_type>>::type
make_value(const T &val) { return static_cast<int>(val); }
template <typename C, typename T, typename Char = typename C::char_type>
inline typename std::enable_if<
std::is_constructible<basic_string_view<Char>, T>::value,
typed_value<C, string_type>>::type
make_value(const T &val) { return string_view(val); }
template <typename C, typename T, typename Char = typename C::char_type>
inline typename std::enable_if<
!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_constructible<string_view, T>::value,
// Implicit conversion to std::string is not handled here because it's
// unsafe: https://github.com/fmtlib/fmt/issues/729
typed_value<C, custom_type>>::type