Class value
Synopsis
#include <include/cpptoml.h>
template <class T>
class value : public base
Description
A concrete TOML value representing the "leaves" of the "tree".
Methods
value | ||
clone | ||
get overload | Gets the data associated with this value. | |
get overload | Gets the data associated with this value | |
is_value |
Source
Lines 606-668 in include/cpptoml.h.
template <class T>
class value : public base
{
struct make_shared_enabler
{
// nothing; this is a private key accessible only to friends
};
template <class U>
friend std::shared_ptr<typename value_traits<U>::type>
cpptoml::make_value(U&& val);
public:
static_assert(valid_value<T>::value, "invalid value type");
std::shared_ptr<base> clone() const override;
value(const make_shared_enabler&, const T& val) : value(val)
{
// nothing; note that users cannot actually invoke this function
// because they lack access to the make_shared_enabler.
}
bool is_value() const override
{
return true;
}
/**
* Gets the data associated with this value.
*/
T& get()
{
return data_;
}
/**
* Gets the data associated with this value. Const version.
*/
const T& get() const
{
return data_;
}
private:
T data_;
/**
* Constructs a value from the given data.
*/
#if defined(CPPTOML_NO_RTTI)
value(const T& val) : base(base_type_traits<T>::type), data_(val)
{
}
#else
value(const T& val) : data_(val)
{
}
#endif
value(const value& val) = delete;
value& operator=(const value& val) = delete;
};