16 namespace daw::json::json_details {
17 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
18 [[nodiscard]]
static constexpr json_result<JsonMember>
19 parse_value( ParseTag<JsonParseTypes::Real>, Range &rng );
21 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
22 [[nodiscard]]
static constexpr json_result<JsonMember>
23 parse_value( ParseTag<JsonParseTypes::Signed>, Range &rng );
25 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
26 [[nodiscard]]
static constexpr json_result<JsonMember>
27 parse_value( ParseTag<JsonParseTypes::Unsigned>, Range &rng );
29 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
30 [[nodiscard]]
static constexpr json_result<JsonMember>
31 parse_value( ParseTag<JsonParseTypes::Null>, Range &rng );
33 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
34 [[nodiscard]]
static constexpr json_result<JsonMember>
35 parse_value( ParseTag<JsonParseTypes::Bool>, Range &rng );
37 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
38 [[nodiscard]]
static constexpr json_result<JsonMember>
39 parse_value( ParseTag<JsonParseTypes::StringRaw>, Range &rng );
41 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
42 [[nodiscard]]
static constexpr json_result<JsonMember>
43 parse_value( ParseTag<JsonParseTypes::StringEscaped>, Range &rng );
45 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
46 [[nodiscard]]
static constexpr json_result<JsonMember>
47 parse_value( ParseTag<JsonParseTypes::Date>, Range &rng );
49 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
50 [[nodiscard]]
static constexpr json_result<JsonMember>
51 parse_value( ParseTag<JsonParseTypes::Custom>, Range &rng );
53 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
54 [[nodiscard]]
static constexpr json_result<JsonMember>
55 parse_value( ParseTag<JsonParseTypes::Class>, Range &rng );
57 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
58 [[nodiscard]]
static constexpr json_result<JsonMember>
59 parse_value( ParseTag<JsonParseTypes::Array>, Range & );
61 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
62 [[nodiscard]]
static constexpr json_result<JsonMember>
63 parse_value( ParseTag<JsonParseTypes::KeyValue>, Range &rng );
65 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
66 [[nodiscard]]
static constexpr json_result<JsonMember>
67 parse_value( ParseTag<JsonParseTypes::KeyValueArray>, Range &rng );
69 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
70 [[nodiscard]]
static constexpr json_result<JsonMember>
71 parse_value( ParseTag<JsonParseTypes::Variant>, Range &rng );
73 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
74 [[nodiscard, maybe_unused]] constexpr json_result<JsonMember>
75 parse_value( ParseTag<JsonParseTypes::VariantTagged>, Range &rng );
77 template<
typename JsonMember,
bool KnownBounds = false,
typename Range>
78 constexpr json_result<JsonMember>
79 parse_value( ParseTag<JsonParseTypes::Unknown>, Range &rng );
81 #if( defined( _MSC_VER ) and not defined( __clang__ ) )
85 inline constexpr
bool can_random_v =
false;
87 template<
bool KnownBounds>
88 inline constexpr
bool can_random_v = KnownBounds;