detail/value_from.hpp

98.1% Lines (1421/1449) 98.1% List of functions (309/315)
f(x) Functions (315)
Function Calls Lines Branches Blocks
void boost::json::detail::append_tuple_element<boost::json::detail::no_context, boost::json::key_value_pair&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 62.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, boost::json::key_value_pair&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<decltype(nullptr), unsigned long> const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<decltype(nullptr), unsigned long> const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int const, int> >::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 18x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int const, int> >::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 18x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int const, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 12x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int const, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 12x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, bool> const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, bool> const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 3x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 3x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, boost::json::string>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, boost::json::string>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, int> const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 10x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<int, int> const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 10x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> >::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 18x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> >::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 18x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> >::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 12x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> >::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 12x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::vector<int, std::allocator<int> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > > const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::pair<std::vector<int, std::allocator<int> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > > const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 2x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > const&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 0 0.0% 0.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 0 0.0% 0.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > const&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 0 0.0% 0.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, user_ns::ip_address const&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, user_ns::ip_address const&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, user_ns::ip_address const&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<boost::json::detail::no_context, user_ns::ip_address const&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, boost::json::key_value_pair&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, boost::json::key_value_pair&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<int const, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<int const, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<int, boost::json::string>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::pair<int, boost::json::string>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, boost::json::key_value_pair&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, boost::json::key_value_pair&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<int const, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<int const, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<int, boost::json::string>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::pair<int, boost::json::string>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::tuple<int, boost::json::string, int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::tuple<int, boost::json::string, int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::tuple<int, boost::json::string, int, bool>&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<std::tuple<value_from_test_ns::custom_context> >, std::tuple<int, boost::json::string, int, bool>&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<user_ns::as_string, user_ns::as_iso_8601>, std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 3x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<user_ns::as_string, user_ns::as_iso_8601>, std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 3x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context>, std::pair<value_from_test_ns::T12, value_from_test_ns::T13> >::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context>, std::pair<value_from_test_ns::T12, value_from_test_ns::T13> >::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, boost::json::key_value_pair&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, boost::json::key_value_pair&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<int const, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<int const, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<int, boost::json::string>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::pair<int, boost::json::string>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<std::tuple<value_from_test_ns::custom_context>, std::tuple<int, boost::json::string, int, bool>&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, boost::json::key_value_pair&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 62.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, boost::json::key_value_pair&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<boost::core::basic_string_view<char>, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<int const, int>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<int const, int>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 6x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<int, boost::json::string>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::pair<int, boost::json::string>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<0ul>(std::integral_constant<unsigned long, 0ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<1ul>(std::integral_constant<unsigned long, 1ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<2ul>(std::integral_constant<unsigned long, 2ul>) const :37 1x 100.0% 67.0% void boost::json::detail::append_tuple_element<value_from_test_ns::custom_context, std::tuple<int, boost::json::string, int, bool>&>::operator()<3ul>(std::integral_constant<unsigned long, 3ul>) const :37 1x 100.0% 67.0% void boost::json::detail::value_from_impl<boost::json::my_app::customer&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::json::my_app::customer&, boost::json::detail::no_context const&) :50 0 0.0% 0.0% void boost::json::detail::value_from_impl<boost::variant2::variant<bool, unsigned long> const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<bool, unsigned long> const&, boost::json::detail::no_context const&) :50 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<boost::variant2::monostate, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<boost::variant2::monostate, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context const&) :50 3x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<boost::variant2::monostate, std::vector<int, std::allocator<int> > > const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<boost::variant2::monostate, std::vector<int, std::allocator<int> > > const&, boost::json::detail::no_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context const&) :50 10x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<int> const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<int> const&, boost::json::detail::no_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<std::vector<int, std::allocator<int> > > const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<std::vector<int, std::allocator<int> > > const&, boost::json::detail::no_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::variant<std::vector<int, std::allocator<int> >, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > >, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > > const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, boost::variant2::variant<std::vector<int, std::allocator<int> >, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > >, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > > const&, boost::json::detail::no_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns2::ip_address&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, user_ns2::ip_address&, boost::json::detail::no_context const&) :50 4x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns::ip_address const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, user_ns::ip_address const&, boost::json::detail::no_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T1 const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T1 const&, boost::json::detail::no_context const&) :50 2x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T1, value_from_test_ns::custom_context>(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T1&&, value_from_test_ns::custom_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T2 const&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T2 const&, boost::json::detail::no_context const&) :50 2x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T5&, boost::json::detail::no_context>(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T5&, boost::json::detail::no_context const&) :50 2x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T5&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T5&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T5&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T5&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T5&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T5&, std::tuple<value_from_test_ns::custom_context> const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T5&, value_from_test_ns::custom_context>(boost::json::detail::user_conversion_tag, boost::json::value&, value_from_test_ns::T5&, value_from_test_ns::custom_context const&) :50 1x 100.0% 100.0% void boost::json::detail::value_from_impl<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::context_conversion_tag, boost::json::value&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> const&) :57 3x 100.0% 100.0% void boost::json::detail::value_from_impl<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::context_conversion_tag, boost::json::value&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> const&) :57 3x 100.0% 100.0% void boost::json::detail::value_from_impl<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, user_ns::as_iso_8601>(boost::json::detail::context_conversion_tag, boost::json::value&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, user_ns::as_iso_8601 const&) :57 2x 100.0% 100.0% void boost::json::detail::value_from_impl<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, user_ns::date_format>(boost::json::detail::context_conversion_tag, boost::json::value&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >&, user_ns::date_format const&) :57 1x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns::ip_address const&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::context_conversion_tag, boost::json::value&, user_ns::ip_address const&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> const&) :57 3x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns::ip_address const&, user_ns::as_string>(boost::json::detail::context_conversion_tag, boost::json::value&, user_ns::ip_address const&, user_ns::as_string const&) :57 1x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns::ip_address&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::context_conversion_tag, boost::json::value&, user_ns::ip_address&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> const&) :57 3x 100.0% 100.0% void boost::json::detail::value_from_impl<user_ns::ip_address&, user_ns::as_string>(boost::json::detail::context_conversion_tag, boost::json::value&, user_ns::ip_address&, user_ns::as_string const&) :57 4x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T12 const&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> >(boost::json::detail::context_conversion_tag, boost::json::value&, value_from_test_ns::T12 const&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> const&) :57 2x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T12, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> >(boost::json::detail::context_conversion_tag, boost::json::value&, value_from_test_ns::T12&&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> const&) :57 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T12, value_from_test_ns::custom_context>(boost::json::detail::context_conversion_tag, boost::json::value&, value_from_test_ns::T12&&, value_from_test_ns::custom_context const&) :57 1x 100.0% 100.0% void boost::json::detail::value_from_impl<value_from_test_ns::T13, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> >(boost::json::detail::context_conversion_tag, boost::json::value&, value_from_test_ns::T13&&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> const&) :57 2x 100.0% 100.0% void boost::json::detail::value_from_impl<std::map<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address, std::less<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const, user_ns::ip_address> > >&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::full_context_conversion_tag, boost::json::value&, std::map<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address, std::less<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, std::allocator<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const, user_ns::ip_address> > >&, std::tuple<user_ns::maps_as_objects, user_ns::as_string, user_ns::as_iso_8601> const&) :65 1x 100.0% 100.0% void boost::json::detail::value_from_impl<std::vector<value_from_test_ns::T12, std::allocator<value_from_test_ns::T12> >, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> >(boost::json::detail::full_context_conversion_tag, boost::json::value&, std::vector<value_from_test_ns::T12, std::allocator<value_from_test_ns::T12> >&&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> const&) :65 1x 100.0% 100.0% void boost::json::detail::value_from_impl<bool const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, bool const&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<bool&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, bool&, boost::json::detail::no_context const&) :78 5x 100.0% 100.0% void boost::json::detail::value_from_impl<bool&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, bool&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<bool&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, bool&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<bool&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, bool&, std::tuple<value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<bool&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, bool&, value_from_test_ns::custom_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<bool, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, bool&&, boost::json::detail::no_context const&) :78 30x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::array const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::array const&, boost::json::detail::no_context const&) :78 3x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::array, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::array&&, boost::json::detail::no_context const&) :78 16x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::object const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::object const&, boost::json::detail::no_context const&) :78 3x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::object, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::object&&, boost::json::detail::no_context const&) :78 32x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&, boost::json::detail::no_context const&) :78 4x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&, std::tuple<value_from_test_ns::custom_context> const&) :78 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&, value_from_test_ns::custom_context const&) :78 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::string, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::string&&, boost::json::detail::no_context const&) :78 5x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value const&, boost::json::detail::no_context const&) :78 5x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value const&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value const&, std::tuple<value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value const&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value const&, value_from_test_ns::custom_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&, boost::json::detail::no_context const&) :78 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&, std::tuple<value_from_test_ns::custom_context> const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&, value_from_test_ns::custom_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::json::value, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, boost::json::value&&, boost::json::detail::no_context const&) :78 10x 100.0% 100.0% void boost::json::detail::value_from_impl<char const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, char const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<double const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, double const&, boost::json::detail::no_context const&) :78 3x 100.0% 100.0% void boost::json::detail::value_from_impl<double, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, double&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<float const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, float const&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<float, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, float&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<int const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int const&, boost::json::detail::no_context const&) :78 103x 100.0% 100.0% void boost::json::detail::value_from_impl<int const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, int const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<int const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, int const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<int const&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, int const&, std::tuple<value_from_test_ns::custom_context> const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<int const&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int const&, value_from_test_ns::custom_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<int const, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int const&&, boost::json::detail::no_context const&) :78 18x 100.0% 100.0% void boost::json::detail::value_from_impl<int&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int&, boost::json::detail::no_context const&) :78 4083x 100.0% 100.0% void boost::json::detail::value_from_impl<int&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, int&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :78 520x 100.0% 100.0% void boost::json::detail::value_from_impl<int&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::native_conversion_tag, boost::json::value&, int&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :78 520x 100.0% 100.0% void boost::json::detail::value_from_impl<int&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::native_conversion_tag, boost::json::value&, int&, std::tuple<value_from_test_ns::custom_context> const&) :78 520x 100.0% 100.0% void boost::json::detail::value_from_impl<int&, value_from_test_ns::custom_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int&, value_from_test_ns::custom_context const&) :78 520x 100.0% 100.0% void boost::json::detail::value_from_impl<int, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, int&&, boost::json::detail::no_context const&) :78 90x 100.0% 100.0% void boost::json::detail::value_from_impl<long const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, long const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<long long const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, long long const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<long long, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, long long&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<long, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, long&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<short const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, short const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<short, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, short&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<signed char const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, signed char const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned char const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned char const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned char, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned char&&, boost::json::detail::no_context const&) :78 4x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned int const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned int const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned int, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned int&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned long const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned long const&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned long long const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned long long const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned long long, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned long long&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned long, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned long&&, boost::json::detail::no_context const&) :78 7x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned short const&, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned short const&, boost::json::detail::no_context const&) :78 1x 100.0% 100.0% void boost::json::detail::value_from_impl<unsigned short, boost::json::detail::no_context>(boost::json::detail::native_conversion_tag, boost::json::value&, unsigned short&&, boost::json::detail::no_context const&) :78 6x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::variant2::monostate const&, boost::json::detail::no_context>(boost::json::detail::null_like_conversion_tag, boost::json::value&, boost::variant2::monostate const&, boost::json::detail::no_context const&) :86 1x 100.0% 75.0% void boost::json::detail::value_from_impl<decltype(nullptr) const&, boost::json::detail::no_context>(boost::json::detail::null_like_conversion_tag, boost::json::value&, decltype(nullptr) const&, boost::json::detail::no_context const&) :86 4x 100.0% 75.0% void boost::json::detail::value_from_impl<value_from_test_ns::T7&, boost::json::detail::no_context>(boost::json::detail::null_like_conversion_tag, boost::json::value&, value_from_test_ns::T7&, boost::json::detail::no_context const&) :86 2x 100.0% 75.0% void boost::json::detail::value_from_impl<value_from_test_ns::T7&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::null_like_conversion_tag, boost::json::value&, value_from_test_ns::T7&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :86 1x 100.0% 75.0% void boost::json::detail::value_from_impl<value_from_test_ns::T7&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::null_like_conversion_tag, boost::json::value&, value_from_test_ns::T7&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :86 1x 100.0% 75.0% void boost::json::detail::value_from_impl<value_from_test_ns::T7&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::null_like_conversion_tag, boost::json::value&, value_from_test_ns::T7&, std::tuple<value_from_test_ns::custom_context> const&) :86 1x 100.0% 75.0% void boost::json::detail::value_from_impl<value_from_test_ns::T7&, value_from_test_ns::custom_context>(boost::json::detail::null_like_conversion_tag, boost::json::value&, value_from_test_ns::T7&, value_from_test_ns::custom_context const&) :86 1x 100.0% 75.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char> const, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char> const&&, boost::json::detail::no_context const&) :96 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char> const, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char> const&&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char> const, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char> const&&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char> const, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char> const&&, std::tuple<value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char> const, value_from_test_ns::custom_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char> const&&, value_from_test_ns::custom_context const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char>&, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char>&, boost::json::detail::no_context const&) :96 2x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char>&, std::tuple<value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<boost::core::basic_string_view<char>&, value_from_test_ns::custom_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, boost::core::basic_string_view<char>&, value_from_test_ns::custom_context const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<char const* const&, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, char const* const&, boost::json::detail::no_context const&) :96 2x 100.0% 100.0% void boost::json::detail::value_from_impl<char const* const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, char const* const&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<char const* const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::string_like_conversion_tag, boost::json::value&, char const* const&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<char const* const&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::string_like_conversion_tag, boost::json::value&, char const* const&, std::tuple<value_from_test_ns::custom_context> const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<char const* const&, value_from_test_ns::custom_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, char const* const&, value_from_test_ns::custom_context const&) :96 1x 100.0% 100.0% void boost::json::detail::value_from_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::json::detail::no_context const&) :96 15x 100.0% 100.0% void boost::json::detail::value_from_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&&, boost::json::detail::no_context const&) :96 18x 100.0% 100.0% void boost::json::detail::value_from_impl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::json::detail::no_context>(boost::json::detail::string_like_conversion_tag, boost::json::value&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, boost::json::detail::no_context const&) :96 24x 100.0% 100.0% void boost::json::detail::value_from_impl<std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, boost::json::detail::no_context const&) :105 2x 100.0% 76.0% void boost::json::detail::value_from_impl<std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :105 1x 100.0% 76.0% void boost::json::detail::value_from_impl<std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :105 1x 100.0% 76.0% void boost::json::detail::value_from_impl<std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, std::tuple<value_from_test_ns::custom_context> const&) :105 1x 100.0% 76.0% void boost::json::detail::value_from_impl<std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, value_from_test_ns::custom_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<boost::core::basic_string_view<char>, int, std::less<boost::core::basic_string_view<char> >, std::allocator<std::pair<boost::core::basic_string_view<char> const, int> > >&, value_from_test_ns::custom_context const&) :105 1x 100.0% 76.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > const&, boost::json::detail::no_context const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > const&, boost::json::detail::no_context const&) :105 9x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&&, boost::json::detail::no_context const&) :105 6x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > > > const&, boost::json::detail::no_context const&) :105 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > const&, boost::json::detail::no_context const&) :105 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > >&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > >&, boost::json::detail::no_context const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, boost::json::detail::no_context const&) :105 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > > > > const&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > > > > const&, boost::json::detail::no_context const&) :105 3x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, user_ns2::ip_address, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, user_ns2::ip_address> > >&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, user_ns2::ip_address, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, user_ns2::ip_address> > >&, boost::json::detail::no_context const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, user_ns::ip_address, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, user_ns::ip_address> > >&, user_ns::as_string>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, user_ns::ip_address, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, user_ns::ip_address> > >&, user_ns::as_string const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, boost::json::detail::no_context const&) :105 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, std::tuple<value_from_test_ns::custom_context> const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, value_from_test_ns::custom_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&, value_from_test_ns::custom_context const&) :105 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, boost::json::detail::no_context>(boost::json::detail::map_like_conversion_tag, boost::json::value&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&&, boost::json::detail::no_context const&) :105 6x 100.0% 74.0% void boost::json::detail::value_from_impl<int (&) [4], boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, int (&) [4], boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<int (&) [4], std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, int (&) [4], std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<int (&) [4], std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::sequence_conversion_tag, boost::json::value&, int (&) [4], std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<int (&) [4], std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, int (&) [4], std::tuple<value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<int (&) [4], value_from_test_ns::custom_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, int (&) [4], value_from_test_ns::custom_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::array<int, 4ul> const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 4ul> const&, boost::json::detail::no_context const&) :119 4x 100.0% 75.0% void boost::json::detail::value_from_impl<std::array<int, 500ul>&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 500ul>&, boost::json::detail::no_context const&) :119 8x 100.0% 74.0% void boost::json::detail::value_from_impl<std::array<int, 500ul>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 500ul>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::array<int, 500ul>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 500ul>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::array<int, 500ul>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 500ul>&, std::tuple<value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::array<int, 500ul>&, value_from_test_ns::custom_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::array<int, 500ul>&, value_from_test_ns::custom_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, value_from_test_ns::custom_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&, value_from_test_ns::custom_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >&&, boost::json::detail::no_context const&) :119 6x 100.0% 71.0% void boost::json::detail::value_from_impl<std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&&, boost::json::detail::no_context const&) :119 6x 100.0% 68.0% void boost::json::detail::value_from_impl<std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, std::tuple<value_from_test_ns::custom_context> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, value_from_test_ns::custom_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >&, value_from_test_ns::custom_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<bool, std::allocator<bool> > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<bool, std::allocator<bool> > const&, boost::json::detail::no_context const&) :119 2x 100.0% 71.0% void boost::json::detail::value_from_impl<std::vector<bool, std::allocator<bool> >, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<bool, std::allocator<bool> >&&, boost::json::detail::no_context const&) :119 6x 100.0% 69.0% void boost::json::detail::value_from_impl<std::vector<boost::json::my_app::customer, std::allocator<boost::json::my_app::customer> >&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<boost::json::my_app::customer, std::allocator<boost::json::my_app::customer> >&, boost::json::detail::no_context const&) :119 0 0.0% 0.0% void boost::json::detail::value_from_impl<std::vector<boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::variant2::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<decltype(nullptr), std::allocator<decltype(nullptr)> > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<decltype(nullptr), std::allocator<decltype(nullptr)> > const&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<float, std::allocator<float> > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<float, std::allocator<float> > const&, boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<int, std::allocator<int> > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<int, std::allocator<int> > const&, boost::json::detail::no_context const&) :119 14x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<int, std::allocator<int> >&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<int, std::allocator<int> >&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<int, std::allocator<int> >, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<int, std::allocator<int> >&&, boost::json::detail::no_context const&) :119 9x 100.0% 71.0% void boost::json::detail::value_from_impl<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::array<int, 4ul>, std::allocator<std::array<int, 4ul> > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::array<int, 4ul>, std::allocator<std::array<int, 4ul> > > const&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > > const&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > const&, boost::json::detail::no_context const&) :119 7x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>, std::allocator<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address> > >&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>, std::allocator<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address> > >&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, boost::json::detail::no_context const&) :119 2x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, std::allocator<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > > > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, std::allocator<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > > > const&, boost::json::detail::no_context const&) :119 3x 100.0% 74.0% void boost::json::detail::value_from_impl<std::vector<unsigned long, std::allocator<unsigned long> > const&, boost::json::detail::no_context>(boost::json::detail::sequence_conversion_tag, boost::json::value&, std::vector<unsigned long, std::allocator<unsigned long> > const&, boost::json::detail::no_context const&) :119 1x 100.0% 74.0% void boost::json::detail::value_from_impl<boost::json::key_value_pair&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, boost::json::key_value_pair&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<boost::json::key_value_pair&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, boost::json::key_value_pair&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<boost::json::key_value_pair&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::tuple_conversion_tag, boost::json::value&, boost::json::key_value_pair&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<boost::json::key_value_pair&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, boost::json::key_value_pair&, std::tuple<value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<boost::json::key_value_pair&, value_from_test_ns::custom_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, boost::json::key_value_pair&, value_from_test_ns::custom_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<boost::core::basic_string_view<char>, int>&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<boost::core::basic_string_view<char>, int>&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<boost::core::basic_string_view<char>, int>&, std::tuple<value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<boost::core::basic_string_view<char>, int>&, value_from_test_ns::custom_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<boost::core::basic_string_view<char>, int>&, value_from_test_ns::custom_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<decltype(nullptr), unsigned long> const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<decltype(nullptr), unsigned long> const&, boost::json::detail::no_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&, boost::json::detail::no_context const&) :136 12x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :136 6x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :136 6x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&, std::tuple<value_from_test_ns::custom_context> const&) :136 6x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>&, value_from_test_ns::custom_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&, value_from_test_ns::custom_context const&) :136 6x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int const, int>, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int const, int>&&, boost::json::detail::no_context const&) :136 18x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, bool> const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, bool> const&, boost::json::detail::no_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, bool>&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, bool>&, boost::json::detail::no_context const&) :136 3x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, boost::json::string>&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, boost::json::string>&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, boost::json::string>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, boost::json::string>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, boost::json::string>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, boost::json::string>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, boost::json::string>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, boost::json::string>&, std::tuple<value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, boost::json::string>&, value_from_test_ns::custom_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, boost::json::string>&, value_from_test_ns::custom_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<int, int> const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<int, int> const&, boost::json::detail::no_context const&) :136 10x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int>, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int>&&, boost::json::detail::no_context const&) :136 18x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>&&, boost::json::detail::no_context const&) :136 12x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, user_ns::ip_address>&, std::tuple<user_ns::as_string, user_ns::as_iso_8601> const&) :136 3x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<std::vector<int, std::allocator<int> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > > const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<std::vector<int, std::allocator<int> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<int, bool>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<int, bool> > > > > const&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<std::pair<value_from_test_ns::T12, value_from_test_ns::T13>, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::pair<value_from_test_ns::T12, value_from_test_ns::T13>&&, std::tuple<value_from_test_ns::custom_context, value_from_test_ns::another_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, boost::json::string, int, bool>&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, boost::json::string, int, bool>&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, boost::json::string, int, bool>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, boost::json::string, int, bool>&, std::tuple<boost::json::detail::no_context, value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, boost::json::string, int, bool>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, boost::json::string, int, bool>&, std::tuple<std::tuple<value_from_test_ns::custom_context> > const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, boost::json::string, int, bool>&, std::tuple<value_from_test_ns::custom_context> >(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, boost::json::string, int, bool>&, std::tuple<value_from_test_ns::custom_context> const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, boost::json::string, int, bool>&, value_from_test_ns::custom_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, boost::json::string, int, bool>&, value_from_test_ns::custom_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::json::detail::no_context const&) :136 2x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > > const&, boost::json::detail::no_context const&) :136 1x 100.0% 86.0% void boost::json::detail::value_from_impl<std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > > const&, boost::json::detail::no_context const&) :136 0 0.0% 0.0% void boost::json::detail::value_from_impl<std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> >, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> >&&, boost::json::detail::no_context const&) :136 6x 100.0% 86.0% void boost::json::detail::value_from_impl<user_ns::ip_address const&, boost::json::detail::no_context>(boost::json::detail::tuple_conversion_tag, boost::json::value&, user_ns::ip_address const&, boost::json::detail::no_context const&) :136 1x 100.0% 86.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
3 // Copyright (c) 2020 Krystian Stasiowski (sdkrystian@gmail.com)
4 // Copyright (c) 2022 Dmitry Arkhipov (grisumbras@gmail.com)
5 //
6 // Distributed under the Boost Software License, Version 1.0. (See accompanying
7 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 //
9 // Official repository: https://github.com/boostorg/json
10 //
11
12 #ifndef BOOST_JSON_DETAIL_VALUE_FROM_HPP
13 #define BOOST_JSON_DETAIL_VALUE_FROM_HPP
14
15 #include <boost/json/value.hpp>
16 #include <boost/json/conversion.hpp>
17 #include <boost/describe/enum_to_string.hpp>
18 #include <boost/mp11/algorithm.hpp>
19
20 #ifndef BOOST_NO_CXX17_HDR_OPTIONAL
21 # include <optional>
22 #endif
23
24 namespace boost {
25 namespace json {
26
27 namespace detail {
28
29 template< class Ctx, class T >
30 struct append_tuple_element {
31 array& arr;
32 Ctx const& ctx;
33 T&& t;
34
35 template<std::size_t I>
36 void
37 295x operator()(mp11::mp_size_t<I>) const
38 {
39 using std::get;
40 590x arr.emplace_back(value_from(
41 600x get<I>(std::forward<T>(t)), ctx, arr.storage() ));
42 295x }
43 };
44
45 //----------------------------------------------------------
46 // User-provided conversion
47
48 template< class T, class Ctx >
49 void
50 35x value_from_impl( user_conversion_tag, value& jv, T&& from, Ctx const& )
51 {
52 35x tag_invoke( value_from_tag(), jv, static_cast<T&&>(from) );
53 35x }
54
55 template< class T, class Ctx >
56 void
57 26x value_from_impl( context_conversion_tag, value& jv, T&& from, Ctx const& ctx)
58 {
59 using Sup = supported_context<Ctx, T, value_from_conversion>;
60 26x tag_invoke( value_from_tag(), jv, static_cast<T&&>(from), Sup::get(ctx) );
61 26x }
62
63 template< class T, class Ctx >
64 void
65 2x value_from_impl(
66 full_context_conversion_tag, value& jv, T&& from, Ctx const& ctx)
67 {
68 using Sup = supported_context<Ctx, T, value_from_conversion>;
69 2x tag_invoke(
70 2x value_from_tag(), jv, static_cast<T&&>(from), Sup::get(ctx), ctx );
71 2x }
72
73 //----------------------------------------------------------
74 // Native conversion
75
76 template< class T, class Ctx >
77 void
78 6622x value_from_impl( native_conversion_tag, value& jv, T&& from, Ctx const& )
79 {
80 6622x jv = std::forward<T>(from);
81 6622x }
82
83 // null-like types
84 template< class T, class Ctx >
85 void
86 11x value_from_impl( null_like_conversion_tag, value& jv, T&&, Ctx const& )
87 {
88 // do nothing
89 11x BOOST_ASSERT(jv.is_null());
90 (void)jv;
91 11x }
92
93 // string-like types
94 template< class T, class Ctx >
95 void
96 75x value_from_impl( string_like_conversion_tag, value& jv, T&& from, Ctx const& )
97 {
98 75x auto sv = static_cast<string_view>(from);
99 75x jv.emplace_string().assign(sv);
100 75x }
101
102 // map-like types
103 template< class T, class Ctx >
104 void
105 46x value_from_impl( map_like_conversion_tag, value& jv, T&& from, Ctx const& ctx )
106 {
107 using std::get;
108 46x object& obj = jv.emplace_object();
109 46x obj.reserve(detail::try_size(from, size_implementation<T>()));
110 145x for (auto&& elem : from)
111 297x obj.emplace(
112 99x get<0>(elem),
113 99x value_from( get<1>(elem), ctx, obj.storage() ));
114 46x }
115
116 // ranges
117 template< class T, class Ctx >
118 void
119 100x value_from_impl( sequence_conversion_tag, value& jv, T&& from, Ctx const& ctx )
120 {
121 100x array& result = jv.emplace_array();
122 100x result.reserve(detail::try_size(from, size_implementation<T>()));
123 using ForwardedValue = forwarded_value<T&&>;
124 6355x for (auto&& elem : from)
125 6445x result.emplace_back(
126 value_from(
127 // not a static_cast in order to appease clang < 4.0
128 190x ForwardedValue(elem),
129 ctx,
130 result.storage() ));
131 100x }
132
133 // tuple-like types
134 template< class T, class Ctx >
135 void
136 139x value_from_impl( tuple_conversion_tag, value& jv, T&& from, Ctx const& ctx )
137 {
138 139x constexpr std::size_t n =
139 std::tuple_size<remove_cvref<T>>::value;
140 139x array& arr = jv.emplace_array();
141 139x arr.reserve(n);
142 139x mp11::mp_for_each<mp11::mp_iota_c<n>>(
143 139x append_tuple_element< Ctx, T >{ arr, ctx, std::forward<T>(from) });
144 139x }
145
146 // no suitable conversion implementation
147 template< class T, class Ctx >
148 void
149 value_from_impl( no_conversion_tag, value&, T&&, Ctx const& )
150 {
151 static_assert(
152 !std::is_same<T, T>::value,
153 "No suitable tag_invoke overload found for the type");
154 }
155
156 template< class Ctx, class T >
157 struct from_described_member
158 {
159 static_assert(
160 uniquely_named_members< remove_cvref<T> >::value,
161 "The type has several described members with the same name.");
162
163 using Ds = described_members< remove_cvref<T> >;
164
165 object& obj;
166 Ctx const& ctx;
167 T&& from;
168
169 template< class I >
170 void
171 operator()(I) const
172 {
173 using D = mp11::mp_at<Ds, I>;
174 obj.emplace(
175 D::name,
176 value_from(
177 static_cast<T&&>(from).* D::pointer,
178 ctx,
179 obj.storage()));
180 }
181 };
182
183 // described classes
184 template< class T, class Ctx >
185 void
186 value_from_impl(
187 described_class_conversion_tag, value& jv, T&& from, Ctx const& ctx )
188 {
189 object& obj = jv.emplace_object();
190 from_described_member<Ctx, T> member_converter{
191 obj, ctx, static_cast<T&&>(from)};
192
193 using Ds = typename decltype(member_converter)::Ds;
194 constexpr std::size_t N = mp11::mp_size<Ds>::value;
195 obj.reserve(N);
196 mp11::mp_for_each< mp11::mp_iota_c<N> >(member_converter);
197 }
198
199 // described enums
200 template< class T, class Ctx >
201 void
202 value_from_impl(
203 described_enum_conversion_tag, value& jv, T from, Ctx const& )
204 {
205 (void)jv;
206 (void)from;
207 #ifdef BOOST_DESCRIBE_CXX14
208 char const* const name = describe::enum_to_string(from, nullptr);
209 if( name )
210 {
211 string& str = jv.emplace_string();
212 str.assign(name);
213 }
214 else
215 {
216 using Integer = typename std::underlying_type< remove_cvref<T> >::type;
217 jv = static_cast<Integer>(from);
218 }
219 #endif
220 }
221
222 // optionals
223 template< class T, class Ctx >
224 void
225 value_from_impl(
226 optional_conversion_tag, value& jv, T&& from, Ctx const& ctx )
227 {
228 if( from )
229 value_from( *from, ctx, jv );
230 else
231 jv = nullptr;
232 }
233
234 // variants
235 template< class Ctx >
236 struct value_from_visitor
237 {
238 value& jv;
239 Ctx const& ctx;
240
241 template<class T>
242 void
243 operator()(T&& t)
244 {
245 value_from( static_cast<T&&>(t), ctx, jv );
246 }
247 };
248
249 template< class Ctx, class T >
250 void
251 value_from_impl( variant_conversion_tag, value& jv, T&& from, Ctx const& ctx )
252 {
253 visit( value_from_visitor<Ctx>{ jv, ctx }, static_cast<T&&>(from) );
254 }
255
256 template< class Ctx, class T >
257 void
258 value_from_impl( path_conversion_tag, value& jv, T&& from, Ctx const& )
259 {
260 std::string s = from.generic_string();
261 string_view sv = s;
262 jv.emplace_string().assign(sv);
263 }
264
265 //----------------------------------------------------------
266 // Contextual conversions
267
268 template< class Ctx, class T >
269 using value_from_category = conversion_category<
270 Ctx, T, value_from_conversion >;
271
272 } // detail
273
274 #ifndef BOOST_NO_CXX17_HDR_OPTIONAL
275 inline
276 void
277 tag_invoke(
278 value_from_tag,
279 value& jv,
280 std::nullopt_t)
281 {
282 // do nothing
283 BOOST_ASSERT(jv.is_null());
284 (void)jv;
285 }
286 #endif
287
288 } // namespace json
289 } // namespace boost
290
291 #endif
292