Im Entwurf der Standardspezifikation N4606, ++ ISO C in §20.15.6 wird is_callable
wie folgt definiert:Wie zu verstehen is_callable Definition?
template <class Fn, class...ArgTypes, class R> struct is_callable<Fn(ArgTypes...), R>
Der Ausdruck
INVOKE(declval<Fn>(),declval<ArgTypes>()...,R)
gut, wenn sie als unevaluierten Operanden behandelt gebildet wird.
Soweit ich Fn(ArgTypes...)
verstehen, ist die Signatur einer Funktion eine Fn
Rückkehr und nimmt als Argumente ArgTypes...
.
So INVOKE(declval<Fn>(),...)
wird versuchen, den Rückgabewert der Funktion aufrufen ??
Also was ist das Ziel von is_callable
? Oder wo irre ich mich?
Was 'INVOKE' ist, nebenbei bemerkt? Ich sehe es in der C++ - Referenz erwähnt, kann aber die Definition nicht finden. –
Ich denke, eine Idee hinter 'std :: is_callable' ersten Parameter ist ähnlich zu [' std :: result_of'] Parameter ( –
@VioletGiraffe: http : //en.cppreference.com/w/cpp/utility/functional/invoke –