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);
40 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&>) {
41 Require (matchedArgs.size () == 1);
42 messageHandler (m, matchedArgs[0]);
45 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&, const String&>) {
46 Require (matchedArgs.size () == 2);
47 messageHandler (m, matchedArgs[0], matchedArgs[1]);
50 else if constexpr (invocable<HANDLER_FUNCTION, Message&, const String&, const String&, const String&>) {
51 Require (matchedArgs.size () == 3);
52 messageHandler (m, matchedArgs[0], matchedArgs[1], matchedArgs[2]);
59 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const Sequence<String>&,
bool&>) HANDLER_FUNCTION>
60 inline RequestHandler::RequestHandler (HANDLER_FUNCTION&& messageHandler)
61 : inherited{messageHandler}
64 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const Sequence<String>&>) HANDLER_FUNCTION>
67 messageHandler (m, matchedArgs);
72 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&>) HANDLER_FUNCTION>
74 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
80 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&>) HANDLER_FUNCTION>
82 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
83 messageHandler (m.rwRequest (), m.rwResponse ());
88 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&, const Sequence<String>&>) HANDLER_FUNCTION>
90 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
91 messageHandler (m.rwRequest (), m.rwResponse (), matchedArgs);
96 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Request&, Response&, const Sequence<String>&,
bool&>) HANDLER_FUNCTION>
98 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
106 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&>) HANDLER_FUNCTION>
108 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
109 Require (matchedArgs.size () == 1);
110 messageHandler (m, matchedArgs[0]);
115 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&, const String&>) HANDLER_FUNCTION>
117 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
118 Require (matchedArgs.size () == 2);
119 messageHandler (m, matchedArgs[0], matchedArgs[1]);
124 template <qCompilerAndStdLib_Constra
intDiffersInTemplateRedeclaration_BWA (invocable<Message&, const String&, const String&, const String&>) HANDLER_FUNCTION>
126 : RequestHandler{[=] (Message& m, [[maybe_unused]] const Sequence<String>& matchedArgs, bool& handled) {
127 Require (matchedArgs.size () == 3);
128 messageHandler (m, matchedArgs[0], matchedArgs[1], matchedArgs[2]);
137 : RequestHandler{[f] (Message& m, const Sequence<String>& a, bool& h) { f (&m, a, &h); }}
141 : RequestHandler{[f] (Message& m, const Sequence<String>& matches, bool& completed) {
148 : RequestHandler{[f] (Message& m, const Sequence<String>&, bool& completed) {
154 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*)>>>*>
156 : RequestHandler{[_Func] (Message& m, const Sequence<String>&, bool& completed) {
162 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const Sequence<String>&)>>>*>
164 : RequestHandler{[_Func] (Message& m, const Sequence<String>& args, bool& completed) {
170 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const String& arg0)>>>*>
172 : RequestHandler{[_Func] (Message& msg, const Sequence<String>& matches) {
173 Require (matches.length () >= 1);
174 _Func (&msg, matches[0]);
178 template <
typename _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Message*, const String& arg0, const String& arg1)>>>*>
180 : RequestHandler{[_Func] (Message& msg, const Sequence<String>& matches) {
181 Require (matches.length () >= 2);
182 _Func (&msg, matches[0], matches[1]);
186 template <
class _Fx, enable_if_t<is_convertible_v<_Fx, function<
void (Request*, Response*)>>>*>
188 : 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)