is_path_like

Determine if T can be treated like std::filesystem::path during conversions.

Synopsis

Defined in header <boost/json/conversion.hpp>.

template<
    class T>
struct is_path_like;

Description

Given t, a glvalue of type T, if

  • given It, the type denoted by decltype(std::begin(t)), std::iterator_traits<It>::iterator_category is well-formed and denotes a type; and

  • std::iterator_traits<It>::value_type is T; and

  • T::value_type is well-formed and denotes a type; and

  • T::string_type is well-formed, denotes a type, and is an alias for std::basic_string< T::value_type >;

then the trait provides the member constant value that is equal to true. Otherwise, value is equal to false.

Users can specialize the trait for their own types if they don’t want them to be treated like filesystem paths. For example:

namespace boost {
namespace json {

template <>
struct is_path_like<your::path> : std::false_type
{ };

} // namespace boost
} // namespace json

Types satisfying the trait

std::filesystem::path, boost::filesystem::path.

See Also

Convenience header <boost/json.hpp>.