考虑以下代码:
struct Bar {
void operator()() {}
};
int main() {
std::cout << std::boolalpha << std::is_function<Bar>::value <<
}
输出是false
。
这并不奇怪,因为仿函数Bar
不符合函数类型§8.3.5 Functions [dcl.fct]的条件。
现在考虑以下代码:
struct Bar {
void operator()() {}
};
int main() {
std::cout << std::boolalpha << std::is_function<Bar()>::value << std::endl;
^^
}
注意后面的括号Bar
。输出是true
。
如何Bar()
限定为函数类型?
我的猜测是这是最令人烦恼的解析的情况,但是既然它在模板参数列表中,怎么可能呢?