관리-도구
편집 파일: nvp.hpp
/* 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 <boost/core/addressof.hpp> #include <boost/config.hpp> namespace boost { namespace serialization { template<class T> 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<class T> inline const nvp<T> make_nvp(const char* n, T& v) BOOST_NOEXCEPT { return nvp<T>(n, v); } } /* serialization */ using serialization::nvp; using serialization::make_nvp; } /* boost */ #define BOOST_NVP(v) boost::make_nvp(BOOST_STRINGIZE(v), v) #endif