|
template<typename Function , typename ... Functions> |
static auto | test (const void *) -> decltype(Retry::template test< Function, Functions... >()) |
| Catch-all overload of undefined function used in decltype only. More...
|
|
template<typename Function , typename ... Functions> |
static auto | test (std::true_type *) -> decltype((void) std::declval< Function >()((QualifiedBaseClass *) nullptr), applicable1< R, BaseClass, ArgumentType, Function >{}) |
| overload when upcast of ArgumentType* works, with sfinae'd return type More...
|
|
template<typename Function , typename ... Functions> |
static auto | test (std::true_type *) -> decltype((void) std::declval< Function >()((QualifiedBaseClass *) nullptr, std::declval< Continuation< R > >()), applicable2< Tag, R, BaseClass, ArgumentType, Function, Functions... >{}) |
| overload when upcast of ArgumentType* works, with sfinae'd return type More...
|
|
template<typename Function , typename ... Functions> |
static auto | test () -> decltype(test< Function, Functions... >((std::integral_constant< bool, Compatible > *) nullptr)) |
| undefined function used in decltype only to compute a type, using other overloads More...
|
|
template<typename Tag, typename R, typename ArgumentType, typename BaseClass, typename ... BaseClasses>
struct Track::Dispatcher::Switch< Tag, R, ArgumentType, TypeList::List< BaseClass, BaseClasses... > >
Recursive case, tries to match function with one base class of ArgumentType.
Computes a type as the return type of undefined member test()
Definition at line 564 of file Track.h.
template<typename Tag , typename R , typename ArgumentType , typename BaseClass , typename ... BaseClasses>
template<typename Function , typename ... Functions>
undefined function used in decltype only to compute a type, using other overloads
template<typename Tag , typename R , typename ArgumentType , typename BaseClass , typename ... BaseClasses>
template<typename Function , typename ... Functions>
Catch-all overload of undefined function used in decltype only.
If ArgumentType is not compatible with BaseClass, or if Function does not accept QualifiedBaseClass*, try other BaseClasses.
template<typename Tag , typename R , typename ArgumentType , typename BaseClass , typename ... BaseClasses>
template<typename Function , typename ... Functions>
overload when upcast of ArgumentType* works, with sfinae'd return type
If BaseClass is a base of ArgumentType and Function can take a pointer to it, then overload resolution chooses this. If not, then the sfinae rule makes this overload unavailable.
template<typename Tag , typename R , typename ArgumentType , typename BaseClass , typename ... BaseClasses>
template<typename Function , typename ... Functions>
static auto Track::Dispatcher::Switch< Tag, R, ArgumentType, TypeList::List< BaseClass, BaseClasses... > >::test |
( |
std::true_type * |
| ) |
-> decltype((void) std::declval< Function >()((QualifiedBaseClass *) nullptr, std::declval< Continuation< R > >()), applicable2< Tag, R, BaseClass, ArgumentType, Function, Functions... >{}) |
|
static |
overload when upcast of ArgumentType* works, with sfinae'd return type
If BaseClass is a base of ArgumentType and Function can take a pointer to it, with a second argument for a continuation, then overload resolution chooses this. If not, then the sfinae rule makes this overload unavailable.