|
12 | 12 | #define BOOST_JSON_IMPL_CONVERSION_HPP |
13 | 13 |
|
14 | 14 | #include <boost/json/fwd.hpp> |
15 | | -#include <boost/json/value.hpp> |
16 | 15 | #include <boost/json/string_view.hpp> |
17 | 16 | #include <boost/describe/enumerators.hpp> |
18 | 17 | #include <boost/describe/members.hpp> |
|
30 | 29 |
|
31 | 30 | namespace boost { |
32 | 31 | namespace json { |
| 32 | + |
| 33 | +class value_ref; |
| 34 | + |
33 | 35 | namespace detail { |
34 | 36 |
|
35 | 37 | #ifdef __cpp_lib_nonmember_container_access |
@@ -196,6 +198,7 @@ struct object_conversion_tag : native_conversion_tag { }; |
196 | 198 | struct array_conversion_tag : native_conversion_tag { }; |
197 | 199 | struct string_conversion_tag : native_conversion_tag { }; |
198 | 200 | struct bool_conversion_tag : native_conversion_tag { }; |
| 201 | +struct value_ref_tag : native_conversion_tag { }; |
199 | 202 | struct number_conversion_tag : native_conversion_tag { }; |
200 | 203 | struct integral_conversion_tag : number_conversion_tag { }; |
201 | 204 | struct floating_point_conversion_tag : number_conversion_tag { }; |
@@ -358,6 +361,9 @@ using native_conversion_category = mp11::mp_cond< |
358 | 361 | // generic conversions |
359 | 362 | template< class T > |
360 | 363 | using generic_conversion_category = mp11::mp_cond< |
| 364 | + // std::is_same<T,std::initializer_list<value_ref>>, init_list_tag, |
| 365 | + std::is_same<T, value_ref>, value_ref_tag, |
| 366 | + |
361 | 367 | std::is_same<T, bool>, bool_conversion_tag, |
362 | 368 | std::is_integral<T>, integral_conversion_tag, |
363 | 369 | std::is_floating_point<T>, floating_point_conversion_tag, |
|
0 commit comments