JSON for Modern C++ 2.1.1
Loading...
Searching...
No Matches

◆ get_ptr() [2/2]

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 PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
PointerType nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get_ptr ( )
inlinenoexcept

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

Warning
Writing data to the pointee of the result yields an undefined state.
Template Parameters
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t. Enforced by a static assertion.
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
Complexity\n Constant.
Example\n The example below shows how pointers to internal values of a
JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.
1#include <json.hpp>
2
3using json = nlohmann::json;
4
5int main()
6{
7 // create a JSON number
8 json value = 17;
9
10 // explicitly getting pointers
11 auto p1 = value.get_ptr<const json::number_integer_t*>();
13 auto p3 = value.get_ptr<json::number_integer_t* const>();
14 auto p4 = value.get_ptr<const json::number_integer_t* const>();
16
17 // print the pointees
18 std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\n';
19 std::cout << std::boolalpha << (p5 == nullptr) << '\n';
20}
static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
explicitly create an array from an initializer list
Definition json.hpp:2165
NumberFloatType number_float_t
a type for a number (floating-point)
Definition json.hpp:1618
NumberIntegerType number_integer_t
a type for a number (integer)
Definition json.hpp:1479
@ value
the parser finished reading a JSON value
PointerType get_ptr() noexcept
get a pointer value (implicit)
Definition json.hpp:3361
a class to store JSON values
Definition json.hpp:1040
basic_json<> json
default JSON class
Definition json.hpp:12369

Output (play with this example online):
17 17 17 17
true

The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/get_ptr.cpp -o get_ptr 
Since
version 1.0.0

Definition at line 3361 of file json.hpp.