class foo {
public:
bool operator () (int & i) {
return true;
}
};
int main() {
foo(WhyDoesThisCompile);
return 0;
}
将WhyDoesThisCompile
(不含空格)传递给仿函数时,程序会编译。
这是为什么?我在clang 4.0.0上测试了它。
答案 0 :(得分:30)
您没有调用仿函数。
您宣布foo
,名为WhyDoesThisCompile
。
是的,尽管有括号。
我猜你的意思是:
foo()(WhyDoesThisCompile);
// ^^^^^
// temp ^^^^^^^^^^^^^^^^^^^^
// of invocation of op()
// type
// `foo`
......没有。