109 lines
2.2 KiB
Plaintext
109 lines
2.2 KiB
Plaintext
[/
|
|
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]
|