JSON for Modern C++  2.0.0
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 ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
ReferenceType nlohmann::basic_json::get_ref ( )
inline

Implict 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.
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 }
basic_json<> json
default JSON class
Definition: json.hpp:9587
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:539
NumberFloatType number_float_t
a type for a number (floating-point)
Definition: json.hpp:679
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 2944 of file json.hpp.