Skip to content

Commit 013377a

Browse files
committed
Revert back to non-variadic binding
Unwind previous commit and restore original behaviour for binding, pending further investigation. Some functions like `EventQueue::call` require precisely matching argument types to get the correct overload, as before. Others like `EventQueue::event` permit compatible types for binding, and those handle the 0-5 bound arguments non-variadically in order to correctly locate the free arguments in deduction.
1 parent 62062ef commit 013377a

File tree

2 files changed

+532
-71
lines changed

2 files changed

+532
-71
lines changed

events/Event.h

+322-30
Original file line numberDiff line numberDiff line change
@@ -251,30 +251,142 @@ class Event<void(ArgTs...)> {
251251
/** Create an event
252252
* @see Event::Event
253253
*/
254-
template <typename T, typename R, typename... BoundArgTs>
255-
Event(EventQueue *q, T *obj, R(T::*method)(BoundArgTs..., ArgTs...), impl::type_identity_t<BoundArgTs>... context_args) :
256-
Event(q, mbed::callback(obj, method), context_args...) { }
254+
template <typename T, typename R, typename B0>
255+
Event(EventQueue *q, T *obj, R(T::*method)(B0, ArgTs...), B0 b0) :
256+
Event(q, mbed::callback(obj, method), b0) { }
257257

258258
/** Create an event
259259
* @see Event::Event
260260
*/
261-
template <typename T, typename R, typename... BoundArgTs>
262-
Event(EventQueue *q, const T *obj, R(T::*method)(BoundArgTs..., ArgTs...) const, impl::type_identity_t<BoundArgTs>... context_args) :
263-
Event(q, mbed::callback(obj, method), context_args...) { }
261+
template <typename T, typename R, typename B0>
262+
Event(EventQueue *q, const T *obj, R(T::*method)(B0, ArgTs...) const, B0 b0) :
263+
Event(q, mbed::callback(obj, method), b0) { }
264264

265265
/** Create an event
266266
* @see Event::Event
267267
*/
268-
template <typename T, typename R, typename... BoundArgTs>
269-
Event(EventQueue *q, volatile T *obj, R(T::*method)(BoundArgTs..., ArgTs...) volatile, impl::type_identity_t<BoundArgTs>... context_args) :
270-
Event(q, mbed::callback(obj, method), context_args...) { }
268+
template <typename T, typename R, typename B0>
269+
Event(EventQueue *q, volatile T *obj, R(T::*method)(B0, ArgTs...) volatile, B0 b0) :
270+
Event(q, mbed::callback(obj, method), b0) { }
271271

272272
/** Create an event
273273
* @see Event::Event
274274
*/
275-
template <typename T, typename R, typename... BoundArgTs>
276-
Event(EventQueue *q, const volatile T *obj, R(T::*method)(BoundArgTs..., ArgTs...) const volatile, impl::type_identity_t<BoundArgTs>... context_args) :
277-
Event(q, mbed::callback(obj, method), context_args...) { }
275+
template <typename T, typename R, typename B0>
276+
Event(EventQueue *q, const volatile T *obj, R(T::*method)(B0, ArgTs...) const volatile, B0 b0) :
277+
Event(q, mbed::callback(obj, method), b0) { }
278+
279+
/** Create an event
280+
* @see Event::Event
281+
*/
282+
template <typename T, typename R, typename B0, typename B1>
283+
Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, ArgTs...), B0 b0, B1 b1) :
284+
Event(q, mbed::callback(obj, method), b0, b1) { }
285+
286+
/** Create an event
287+
* @see Event::Event
288+
*/
289+
template <typename T, typename R, typename B0, typename B1>
290+
Event(EventQueue *q, const T *obj, R(T::*method)(B0, B1, ArgTs...) const, B0 b0, B1 b1) :
291+
Event(q, mbed::callback(obj, method), b0, b1) { }
292+
293+
/** Create an event
294+
* @see Event::Event
295+
*/
296+
template <typename T, typename R, typename B0, typename B1>
297+
Event(EventQueue *q, volatile T *obj, R(T::*method)(B0, B1, ArgTs...) volatile, B0 b0, B1 b1) :
298+
Event(q, mbed::callback(obj, method), b0, b1) { }
299+
300+
/** Create an event
301+
* @see Event::Event
302+
*/
303+
template <typename T, typename R, typename B0, typename B1>
304+
Event(EventQueue *q, const volatile T *obj, R(T::*method)(B0, B1, ArgTs...) const volatile, B0 b0, B1 b1) :
305+
Event(q, mbed::callback(obj, method), b0, b1) { }
306+
307+
/** Create an event
308+
* @see Event::Event
309+
*/
310+
template <typename T, typename R, typename B0, typename B1, typename B2>
311+
Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, ArgTs...), B0 b0, B1 b1, B2 b2) :
312+
Event(q, mbed::callback(obj, method), b0, b1, b2) { }
313+
314+
/** Create an event
315+
* @see Event::Event
316+
*/
317+
template <typename T, typename R, typename B0, typename B1, typename B2>
318+
Event(EventQueue *q, const T *obj, R(T::*method)(B0, B1, B2, ArgTs...) const, B0 b0, B1 b1, B2 b2) :
319+
Event(q, mbed::callback(obj, method), b0, b1, b2) { }
320+
321+
/** Create an event
322+
* @see Event::Event
323+
*/
324+
template <typename T, typename R, typename B0, typename B1, typename B2>
325+
Event(EventQueue *q, volatile T *obj, R(T::*method)(B0, B1, B2, ArgTs...) volatile, B0 b0, B1 b1, B2 b2) :
326+
Event(q, mbed::callback(obj, method), b0, b1, b2) { }
327+
328+
/** Create an event
329+
* @see Event::Event
330+
*/
331+
template <typename T, typename R, typename B0, typename B1, typename B2>
332+
Event(EventQueue *q, const volatile T *obj, R(T::*method)(B0, B1, B2, ArgTs...) const volatile, B0 b0, B1 b1, B2 b2) :
333+
Event(q, mbed::callback(obj, method), b0, b1, b2) { }
334+
335+
/** Create an event
336+
* @see Event::Event
337+
*/
338+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3>
339+
Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...), B0 b0, B1 b1, B2 b2, B3 b3) :
340+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3) { }
341+
342+
/** Create an event
343+
* @see Event::Event
344+
*/
345+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3>
346+
Event(EventQueue *q, const T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) const, B0 b0, B1 b1, B2 b2, B3 b3) :
347+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3) { }
348+
349+
/** Create an event
350+
* @see Event::Event
351+
*/
352+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3>
353+
Event(EventQueue *q, volatile T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) volatile, B0 b0, B1 b1, B2 b2, B3 b3) :
354+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3) { }
355+
356+
/** Create an event
357+
* @see Event::Event
358+
*/
359+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3>
360+
Event(EventQueue *q, const volatile T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) const volatile, B0 b0, B1 b1, B2 b2, B3 b3) :
361+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3) { }
362+
363+
/** Create an event
364+
* @see Event::Event
365+
*/
366+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4>
367+
Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4) :
368+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3, b4) { }
369+
370+
/** Create an event
371+
* @see Event::Event
372+
*/
373+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4>
374+
Event(EventQueue *q, const T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4) :
375+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3, b4) { }
376+
377+
/** Create an event
378+
* @see Event::Event
379+
*/
380+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4>
381+
Event(EventQueue *q, volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4) :
382+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3, b4) { }
383+
384+
/** Create an event
385+
* @see Event::Event
386+
*/
387+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4>
388+
Event(EventQueue *q, const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4) :
389+
Event(q, mbed::callback(obj, method), b0, b1, b2, b3, b4) { }
278390
};
279391

280392

@@ -283,40 +395,220 @@ class Event<void(ArgTs...)> {
283395

284396
// Convenience functions declared here to avoid cyclic
285397
// dependency between Event and EventQueue
286-
template <typename R, typename... BoundArgTs, typename... ArgTs>
287-
Event<void(ArgTs...)> EventQueue::event(R(*func)(BoundArgTs..., ArgTs...), impl::type_identity_t<BoundArgTs>... context_args)
398+
template <typename R, typename... ArgTs>
399+
Event<void(ArgTs...)> EventQueue::event(R(*func)(ArgTs...))
400+
{
401+
return Event<void(ArgTs...)>(this, func);
402+
}
403+
404+
template <typename T, typename R, typename... ArgTs>
405+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(ArgTs...))
406+
{
407+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method));
408+
}
409+
410+
template <typename T, typename R, typename... ArgTs>
411+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(ArgTs...) const)
412+
{
413+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method));
414+
}
415+
416+
template <typename T, typename R, typename... ArgTs>
417+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(ArgTs...) volatile)
418+
{
419+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method));
420+
}
421+
422+
template <typename T, typename R, typename... ArgTs>
423+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(ArgTs...) const volatile)
424+
{
425+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method));
426+
}
427+
428+
template <typename R, typename... ArgTs>
429+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(ArgTs...)> cb)
430+
{
431+
return Event<void(ArgTs...)>(this, cb);
432+
}
433+
434+
template <typename R, typename B0, typename C0, typename... ArgTs>
435+
Event<void(ArgTs...)> EventQueue::event(R(*func)(B0, ArgTs...), C0 c0)
436+
{
437+
return Event<void(ArgTs...)>(this, func, c0);
438+
}
439+
440+
template <typename T, typename R, typename B0, typename C0, typename... ArgTs>
441+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(B0, ArgTs...), C0 c0)
442+
{
443+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0);
444+
}
445+
446+
template <typename T, typename R, typename B0, typename C0, typename... ArgTs>
447+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(B0, ArgTs...) const, C0 c0)
448+
{
449+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0);
450+
}
451+
452+
template <typename T, typename R, typename B0, typename C0, typename... ArgTs>
453+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(B0, ArgTs...) volatile, C0 c0)
454+
{
455+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0);
456+
}
457+
458+
template <typename T, typename R, typename B0, typename C0, typename... ArgTs>
459+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(B0, ArgTs...) const volatile, C0 c0)
460+
{
461+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0);
462+
}
463+
464+
template <typename R, typename B0, typename C0, typename... ArgTs>
465+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(B0, ArgTs...)> cb, C0 c0)
466+
{
467+
return Event<void(ArgTs...)>(this, cb, c0);
468+
}
469+
470+
template <typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
471+
Event<void(ArgTs...)> EventQueue::event(R(*func)(B0, B1, ArgTs...), C0 c0, C1 c1)
472+
{
473+
return Event<void(ArgTs...)>(this, func, c0, c1);
474+
}
475+
476+
template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
477+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(B0, B1, ArgTs...), C0 c0, C1 c1)
478+
{
479+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1);
480+
}
481+
482+
template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
483+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(B0, B1, ArgTs...) const, C0 c0, C1 c1)
484+
{
485+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1);
486+
}
487+
488+
template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
489+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(B0, B1, ArgTs...) volatile, C0 c0, C1 c1)
490+
{
491+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1);
492+
}
493+
494+
template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
495+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(B0, B1, ArgTs...) const volatile, C0 c0, C1 c1)
496+
{
497+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1);
498+
}
499+
500+
template <typename R, typename B0, typename B1, typename C0, typename C1, typename... ArgTs>
501+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(B0, B1, ArgTs...)> cb, C0 c0, C1 c1)
502+
{
503+
return Event<void(ArgTs...)>(this, cb, c0, c1);
504+
}
505+
506+
template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
507+
Event<void(ArgTs...)> EventQueue::event(R(*func)(B0, B1, B2, ArgTs...), C0 c0, C1 c1, C2 c2)
508+
{
509+
return Event<void(ArgTs...)>(this, func, c0, c1, c2);
510+
}
511+
512+
template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
513+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, ArgTs...), C0 c0, C1 c1, C2 c2)
514+
{
515+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2);
516+
}
517+
518+
template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
519+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(B0, B1, B2, ArgTs...) const, C0 c0, C1 c1, C2 c2)
520+
{
521+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2);
522+
}
523+
524+
template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
525+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(B0, B1, B2, ArgTs...) volatile, C0 c0, C1 c1, C2 c2)
526+
{
527+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2);
528+
}
529+
530+
template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
531+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(B0, B1, B2, ArgTs...) const volatile, C0 c0, C1 c1, C2 c2)
532+
{
533+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2);
534+
}
535+
536+
template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename... ArgTs>
537+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(B0, B1, B2, ArgTs...)> cb, C0 c0, C1 c1, C2 c2)
538+
{
539+
return Event<void(ArgTs...)>(this, cb, c0, c1, c2);
540+
}
541+
542+
template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
543+
Event<void(ArgTs...)> EventQueue::event(R(*func)(B0, B1, B2, B3, ArgTs...), C0 c0, C1 c1, C2 c2, C3 c3)
544+
{
545+
return Event<void(ArgTs...)>(this, func, c0, c1, c2, c3);
546+
}
547+
548+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
549+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...), C0 c0, C1 c1, C2 c2, C3 c3)
550+
{
551+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3);
552+
}
553+
554+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
555+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) const, C0 c0, C1 c1, C2 c2, C3 c3)
556+
{
557+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3);
558+
}
559+
560+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
561+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) volatile, C0 c0, C1 c1, C2 c2, C3 c3)
562+
{
563+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3);
564+
}
565+
566+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
567+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(B0, B1, B2, B3, ArgTs...) const volatile, C0 c0, C1 c1, C2 c2, C3 c3)
568+
{
569+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3);
570+
}
571+
572+
template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename... ArgTs>
573+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(B0, B1, B2, B3, ArgTs...)> cb, C0 c0, C1 c1, C2 c2, C3 c3)
574+
{
575+
return Event<void(ArgTs...)>(this, cb, c0, c1, c2, c3);
576+
}
577+
578+
template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
579+
Event<void(ArgTs...)> EventQueue::event(R(*func)(B0, B1, B2, B3, B4, ArgTs...), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
288580
{
289-
return Event<void(ArgTs...)>(this, func, context_args...);
581+
return Event<void(ArgTs...)>(this, func, c0, c1, c2, c3, c4);
290582
}
291583

292-
template <typename T, typename R, typename... BoundArgTs, typename... ArgTs>
293-
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(BoundArgTs..., ArgTs...), impl::type_identity_t<BoundArgTs>... context_args)
584+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
585+
Event<void(ArgTs...)> EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
294586
{
295-
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), context_args...);
587+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3, c4);
296588
}
297589

298-
template <typename T, typename R, typename... BoundArgTs, typename... ArgTs>
299-
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(BoundArgTs..., ArgTs...) const, impl::type_identity_t<BoundArgTs>... context_args)
590+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
591+
Event<void(ArgTs...)> EventQueue::event(const T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
300592
{
301-
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), context_args...);
593+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3, c4);
302594
}
303595

304-
template <typename T, typename R, typename... BoundArgTs, typename... ArgTs>
305-
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(BoundArgTs..., ArgTs...) volatile, impl::type_identity_t<BoundArgTs>... context_args)
596+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
597+
Event<void(ArgTs...)> EventQueue::event(volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
306598
{
307-
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), context_args...);
599+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3, c4);
308600
}
309601

310-
template <typename T, typename R, typename... BoundArgTs, typename... ArgTs>
311-
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(BoundArgTs..., ArgTs...) const volatile, impl::type_identity_t<BoundArgTs>... context_args)
602+
template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
603+
Event<void(ArgTs...)> EventQueue::event(const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, ArgTs...) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
312604
{
313-
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), context_args...);
605+
return Event<void(ArgTs...)>(this, mbed::callback(obj, method), c0, c1, c2, c3, c4);
314606
}
315607

316-
template <typename R, typename... BoundArgTs, typename... ArgTs>
317-
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(BoundArgTs..., ArgTs...)> cb, impl::type_identity_t<BoundArgTs>... context_args)
608+
template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4, typename... ArgTs>
609+
Event<void(ArgTs...)> EventQueue::event(mbed::Callback<R(B0, B1, B2, B3, B4, ArgTs...)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
318610
{
319-
return Event<void(ArgTs...)>(this, cb, context_args...);
611+
return Event<void(ArgTs...)>(this, cb, c0, c1, c2, c3, c4);
320612
}
321613
}
322614

0 commit comments

Comments
 (0)