Iros
 
Loading...
Searching...
No Matches
create_parser.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace di::parser {
7namespace detail {
9 template<typename T, concepts::ParserContext Context>
12 constexpr auto operator()(InPlaceType<T>, Context& context) const -> concepts::Parser<Context> auto {
14 return function::tag_invoke(*this, in_place_type<T>, context);
15 } else {
16 return (*this)(in_place_type<T>);
17 }
18 }
19
20 template<typename T>
22 constexpr auto operator()(InPlaceType<T>) const {
24 }
25 };
26}
27
29}
30
31namespace di::concepts {
32template<typename T, typename Context>
33concept Parsable = requires(Context& context) { parser::create_parser_in_place(in_place_type<T>, context); };
34}
35
36namespace di::parser {
37namespace detail {
38 template<typename T>
40 template<concepts::ParserContext Context>
42 constexpr auto operator()(Context& context) const {
44 }
45
46 constexpr auto operator()() const
47 requires(requires { create_parser_in_place(in_place_type<T>); })
48 {
50 }
51 };
52}
53
54template<typename T>
56}
57
58namespace di {
61}
Definition create_parser.h:33
Definition parser.h:10
Definition tag_invoke.h:33
Definition any_storable.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition json_deserializer.h:532
Definition zstring_parser.h:10
Definition zstring_parser.h:9
constexpr auto create_parser
Definition create_parser.h:55
constexpr auto create_parser_in_place
Definition create_parser.h:28
Definition zstring_parser.h:9
constexpr auto in_place_type
Definition in_place_type.h:12
Definition create_parser.h:39
constexpr auto operator()() const
Definition create_parser.h:46
Definition in_place_type.h:5