Sha256: 027558bd37a485118eca45d263057802cbb454bebf1e588092ecc54f3cda7e24
Contents?: true
Size: 1.51 KB
Versions: 7
Compression:
Stored size: 1.51 KB
Contents
// Copyright (c) 2018-2022 Dr. Colin Hirsch and Daniel Frey // Please see LICENSE for license or visit https://github.com/taocpp/json/ #ifndef TAO_JSON_BINDING_INTERNAL_TYPE_KEY_HPP #define TAO_JSON_BINDING_INTERNAL_TYPE_KEY_HPP #include <string> #include "../../internal/string_t.hpp" #include "../../internal/type_traits.hpp" namespace tao::json::binding::internal { struct use_default_key {}; template< typename K, typename V > struct type_key; template< char... Cs, typename V > struct type_key< json::internal::string_t< Cs... >, V > { template< template< typename... > class Traits > [[nodiscard]] static std::string key() { return json::internal::string_t< Cs... >::as_string(); } template< template< typename... > class Traits = traits, typename Consumer > static void produce_key( Consumer& consumer ) { consumer.key( json::internal::string_t< Cs... >::as_string_view() ); } }; template< typename V > struct type_key< use_default_key, V > { template< template< typename... > class Traits > [[nodiscard]] static std::string key() { return Traits< V >::template default_key< Traits >::as_string(); } template< template< typename... > class Traits = traits, typename Consumer > static void produce_key( Consumer& consumer ) { consumer.key( Traits< V >::template default_key< Traits >::as_string_view() ); } }; } // namespace tao::json::binding::internal #endif
Version data entries
7 entries across 7 versions & 1 rubygems