跳转至

convertible_array

template<typename J, typename T, typename D>
concept convertible_array =  std::ranges::range<T> && requires {
    requires std::is_constructible_v<typename T::value_type,D>;
    requires convertible<J, typename T::value_type>;
    requires std::is_default_constructible_v<T>;
    requires std::is_default_constructible_v<typename T::value_type>;
    requires std::is_copy_constructible_v<typename T::value_type>;
} && requires (T t, typename T::value_type v) {
    t.emplace_back(std::move(v));
};

Located in the mysvac::json namespace, this concept indicates that a JSON container type J can attempt to convert its internal data to array type T using to()/move() member functions.

Satisfying this concept only means T can be used as a template parameter for to()/move(), while actual conversion success depends on the JSON container's internal data.

The template parameter D represents the default value type for array type T, which need not be value_type but must be convertible to value_type. This is used to provide default values for subobjects in conversion functions.

Version

Since v3.0.0 .