123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- [/
- 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)
- ]
- [section:nvp nvp]
- [section Overview]
- The header <boost/core/nvp.hpp> provides the class template `boost::nvp` that
- pairs a name (`const char*`) with the address of a value (`T*`). It is the new
- implementation of the NVP type previously provided by the Boost Serialization
- library. This type now lives in the Core library so that other Boost libraries
- can support named value serialization without taking a dependency on the
- Serialization library.
- [endsect]
- [section Examples]
- The following snippet shows use in a member serialize function:
- ```
- template<class A>
- void serialize(A& archive, unsigned)
- {
- archive & boost::make_nvp("x", x_) & boost::make_nvp("y", y_);
- }
- ```
- [endsect]
- [section Reference]
- ```
- namespace boost {
- template<class T>
- class nvp {
- public:
- nvp(const char* name, T& value) noexcept;
- const char* name() const noexcept;
- T& value() const noexcept;
- const T& const_value() const noexcept;
- };
- template<class T>
- const nvp<T> make_nvp(const char* name, T& value) noexcept;
- } /* boost */
- #define BOOST_NVP(object) ``['see below]``
- ```
- [section Constructors]
- [variablelist
- [[`nvp(const char* name, T& value) noexcept;`]
- [Initializes the stored name pointer with `name` and the value pointer with
- `addressof(value)`.]]]
- [endsect]
- [section Members]
- [variablelist
- [[`const char* name() const noexcept;`]
- [Returns a pointer to the name.]]
- [[`T& value() const noexcept;`]
- [Returns a reference to the value.]]
- [[`const T& const_value() const noexcept;`]
- [Returns a reference to the value.]]]
- [endsect]
- [section Functions]
- [variablelist
- [[`template<class T> const nvp<T> make_nvp(const char* name, T& value)
- noexcept;`]
- [Returns `nvp<T>(name, value)`.]]]
- [endsect]
- [section Macros]
- [variablelist
- [[`#define BOOST_NVP(object) see below`]
- [Expands to `boost::make_nvp(BOOST_STRINGIZE(object), object)`.]]]
- [endsect]
- [endsect]
- [section History]
- Robert Ramey originally implemented NVP in the Serialization library. Glen
- Fernandes implemented this new (but compatible) version in the Core library.
- [endsect]
- [endsect]
|