这与检查特定函数是否已定义不同。在这里,为了使此检查返回true,必须定义该函数,并且以某种类型的参数传递应该导致有效调用。
例如:对于函数f和类型为T &&的参数,如果f是接受类型为T &&的参数的有效函数(直接或通过隐式转换),则检查应返回true。
请注意,“arguments”和“parameters”的区别,如此答案所解释的那样。
例如:对于函数f和类型为T &&的参数,如果f是接受类型为T &&的参数的有效函数(直接或通过隐式转换),则检查应返回true。
void f(int &) {};
int main(int argc, char **av)
{
isFunctionCallable<int>(f); // true because `int i; f(i);` is valid.
isFunctionCallable<int &&>(f); // false because `int i; f(std::move(i));` is invalid.
return 0;
}
请注意,“arguments”和“parameters”的区别,如此答案所解释的那样。