13#if qCompilerAndStdLib_template_ConstraintDiffersInTemplateRedeclaration_Buggy
14 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const Sequence<String>&,
bool&>) HANDLER_FUNCTION>
16 : inherited{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, [[maybe_unused]] bool& handled) {
17 if constexpr (invocable<HANDLER_FUNCTION, Message&, const Sequence<String>&,
bool&>) {
18 messageHandler (m, matchedArgs, handled);
20 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const Sequence<String>&>) {
21 messageHandler (m, matchedArgs);
24 else if constexpr (invocable<HANDLER_FUNCTION, Message&>) {
28 else if constexpr (invocable<HANDLER_FUNCTION, Request&, Response&>) {
29 messageHandler (m.rwRequest (), m.rwResponse ());
32 else if constexpr (invocable<HANDLER_FUNCTION, Request&, Response&, const Sequence<String>&>) {
33 messageHandler (m.rwRequest (), m.rwResponse (), matchedArgs);
36 else if constexpr (invocable<HANDLER_FUNCTION, Request&, Response&, const Sequence<String>&,
bool&>) {
37 messageHandler (m.rwRequest (), m.rwResponse (), matchedArgs, handled);
39 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&>) {
40 Require (matchedArgs.size () == 1);
41 messageHandler (m, matchedArgs[0]);
44 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&, const String&>) {
45 Require (matchedArgs.size () == 2);
46 messageHandler (m, matchedArgs[0], matchedArgs[1]);
49 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&, const String&, const String&>) {
50 Require (matchedArgs.size () == 3);
51 messageHandler (m, matchedArgs[0], matchedArgs[1], matchedArgs[2]);
58 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const Sequence<String>&,
bool&>) HANDLER_FUNCTION>
59 inline RequestHandler::RequestHandler (HANDLER_FUNCTION&& messageHandler)
60 : inherited{messageHandler}
63 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const Sequence<String>&>) HANDLER_FUNCTION>
66 messageHandler (m, matchedArgs);
71 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&>) HANDLER_FUNCTION>
73 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
79 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&>) HANDLER_FUNCTION>
81 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
82 messageHandler (m.rwRequest (), m.rwResponse ());
87 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&, const Sequence<String>&>) HANDLER_FUNCTION>
89 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
90 messageHandler (m.rwRequest (), m.rwResponse (), matchedArgs);
95 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&, const Sequence<String>&,
bool&>) HANDLER_FUNCTION>
97 : RequestHandler{[=] (Message& m, const Sequence<String>& matchedArgs, bool& handled) {
98 messageHandler (m.rwRequest (), m.rwResponse (), matchedArgs, handled);
104 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&>) HANDLER_FUNCTION>
106 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
107 Require (matchedArgs.size () == 1);
108 messageHandler (m, matchedArgs[0]);
113 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&, const String&>) HANDLER_FUNCTION>
115 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
116 Require (matchedArgs.size () == 2);
117 messageHandler (m, matchedArgs[0], matchedArgs[1]);
122 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&, const String&, const String&>) HANDLER_FUNCTION>
124 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
125 Require (matchedArgs.size () == 3);
126 messageHandler (m, matchedArgs[0], matchedArgs[1], matchedArgs[2]);
135 : RequestHandler{[f] (Message& m, const Sequence<String>& a, bool& h) { f (&m, a, &h); }}
139 : RequestHandler{[f] (Message& m, const Sequence<String>& matches, bool& completed) {
146 : RequestHandler{[f] (Message& m, const Sequence<String>&, bool& completed) {
152 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*)>>>*>
154 : RequestHandler{[_Func] (Message& m, const Sequence<String>&, bool& completed) {
160 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const Sequence<String>&)>>>*>
162 : RequestHandler{[_Func] (Message& m, const Sequence<String>& args, bool& completed) {
168 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const String& arg0)>>>*>
170 : RequestHandler{[_Func] (Message& msg, const Sequence<String>& matches) {
171 Require (matches.length () >= 1);
172 _Func (&msg, matches[0]);
176 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const String& arg0, const String& arg1)>>>*>
178 : RequestHandler{[_Func] (Message& msg, const Sequence<String>& matches) {
179 Require (matches.length () >= 2);
180 _Func (&msg, matches[0], matches[1]);
184 template <
class _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Request*, Response*)>>>*>
186 : RequestHandler{[_Func] (Message& message) { _Func (&message.rwRequest (), &message.rwResponse ()); }}
String is like std::u32string, except it is much easier to use, often much more space efficient,...
A generalization of a vector: a container whose elements are keyed by the natural numbers.
RequestHandler(HANDLER_FUNCTION &&messageHandler)