| 2470 | |
| 2471 | template<typename value_type, typename string_type, typename object_type> |
| 2472 | struct is_valid_json_object { |
| 2473 | template<typename T> |
| 2474 | using mapped_type_t = typename T::mapped_type; |
| 2475 | template<typename T> |
| 2476 | using key_type_t = typename T::key_type; |
| 2477 | template<typename T> |
| 2478 | using iterator_t = typename T::iterator; |
| 2479 | template<typename T> |
| 2480 | using const_iterator_t = typename T::const_iterator; |
| 2481 | |
| 2482 | static constexpr auto value = |
| 2483 | std::is_constructible<value_type, object_type>::value && |
| 2484 | is_detected<mapped_type_t, object_type>::value && |
| 2485 | std::is_same<typename object_type::mapped_type, value_type>::value && |
| 2486 | is_detected<key_type_t, object_type>::value && |
| 2487 | (std::is_same<typename object_type::key_type, string_type>::value || |
| 2488 | std::is_constructible<typename object_type::key_type, string_type>::value) && |
| 2489 | is_detected<iterator_t, object_type>::value && is_detected<const_iterator_t, object_type>::value && |
| 2490 | is_iterable<object_type>::value && is_count_signature<object_type, string_type>::value && |
| 2491 | is_subcription_operator_signature<object_type, string_type>::value && |
| 2492 | is_at_const_signature<object_type, value_type, string_type>::value; |
| 2493 | }; |
| 2494 | |
| 2495 | template<typename value_type, typename array_type> |
| 2496 | struct is_valid_json_array { |
nothing calls this directly
no outgoing calls
no test coverage detected