JSON for Modern C++  3.0.0

◆ get_ref() [2/2]

template<template< typename, typename, typename... > class ObjectType = std::map, template< typename, typename... > 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 > class AllocatorType = std::allocator, template< typename, typename=void > class JSONSerializer = adl_serializer>
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value and std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0>
ReferenceType nlohmann::basic_json::get_ref ( ) const
inline

get a reference value (implicit) 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 type_error.303 otherwise
Exceptions
type_error.303in case passed type ReferenceType is incompatible with the stored JSON value; see example below
Complexity
Constant.
Example
The example shows several calls to get_ref().
1 #include <iostream>
2 #include "json.hpp"
3 
4 using json = nlohmann::json;
5 
6 int main()
7 {
8  // create a JSON number
9  json value = 17;
10 
11  // explicitly getting references
12  auto r1 = value.get_ref<const json::number_integer_t&>();
13  auto r2 = value.get_ref<json::number_integer_t&>();
14 
15  // print the values
16  std::cout << r1 << ' ' << r2 << '\n';
17 
18  // incompatible type throws exception
19  try
20  {
21  auto r3 = value.get_ref<json::number_float_t&>();
22  }
23  catch (json::type_error& ex)
24  {
25  std::cout << ex.what() << '\n';
26  }
27 }
NumberFloatType number_float_t
a type for a number (floating-point)
Definition: json.hpp:7990
basic_json<> json
default JSON class
Definition: json.hpp:14353
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:7851
detail::type_error type_error
exception indicating executing a member function with a wrong type
Definition: json.hpp:7412
Output (play with this example online):
17 17
[json.exception.type_error.303] 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 9874 of file json.hpp.