JSON for Modern C++  2.1.1
template<template< typename U, typename V, typename...Args > class ObjectType = std::map, template< typename U, typename...Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
ReferenceType nlohmann::basic_json::get_ref ( )
inline

Implicit reference access to the internally stored JSON value. No copies are made.

Warning
Writing data to the referee of the result yields an undefined state.
Template Parameters
ReferenceTypereference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_float_t. Enforced by static assertion.
Returns
reference to the internally stored JSON value if the requested reference type ReferenceType fits to the JSON value; throws std::domain_error otherwise
Exceptions
std::domain_errorin case passed type ReferenceType is incompatible with the stored JSON value
Complexity
Constant.
Example
The example shows several calls to get_ref().
1 #include <json.hpp>
2 
3 using json = nlohmann::json;
4 
5 int main()
6 {
7  // create a JSON number
8  json value = 17;
9 
10  // explicitly getting references
11  auto r1 = value.get_ref<const json::number_integer_t&>();
12  auto r2 = value.get_ref<json::number_integer_t&>();
13 
14  // print the values
15  std::cout << r1 << ' ' << r2 << '\n';
16 
17  // incompatible type throws exception
18  try
19  {
20  auto r3 = value.get_ref<json::number_float_t&>();
21  }
22  catch (std::domain_error& ex)
23  {
24  std::cout << ex.what() << '\n';
25  }
26 }
NumberFloatType number_float_t
a type for a number (floating-point)
Definition: json.hpp:1618
basic_json<> json
default JSON class
Definition: json.hpp:12369
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:4067
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:1479
Output (play with this example online):
17 17
incompatible ReferenceType for get_ref, actual type is number
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/get_ref.cpp -o get_ref 
Since
version 1.1.0

Definition at line 3438 of file json.hpp.