/* Copyright 2019 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_CORE_NVP_HPP #define BOOST_CORE_NVP_HPP #include #include namespace boost { namespace serialization { template class nvp { public: nvp(const char* n, T& v) BOOST_NOEXCEPT : n_(n) , v_(boost::addressof(v)) { } const char* name() const BOOST_NOEXCEPT { return n_; } T& value() const BOOST_NOEXCEPT { return *v_; } const T& const_value() const BOOST_NOEXCEPT { return *v_; } private: const char* n_; T* v_; }; template inline const nvp make_nvp(const char* n, T& v) BOOST_NOEXCEPT { return nvp(n, v); } } /* serialization */ using serialization::nvp; using serialization::make_nvp; } /* boost */ #define BOOST_NVP(v) boost::make_nvp(BOOST_STRINGIZE(v), v) #endif