Callable概念和std :: is_function类型特征之间有什么区别?

Vin*_*ent 10 c++ function-pointers function

C++ 17将有一个Callable概念,我想知道与其类型的确切区别std::is_function<T>::value是什么true.它们是等价的吗?是另一个的超集吗?

T.C*_*.C. 13

C++ 17将有一个Callable概念

它是自C++ 11以来的标准.

它们是等价的吗?是另一个的超集吗?

不,事实上,他们是完全不相交的.Callable仅适用于对象类型,并包括从指针到成员到具有重载operator()到类型的类型的所有内容,其中隐式转换为函数指针本身的函数指针.

is_function 仅适用于实际函数类型,根据定义,它们不是对象类型.

  • LWG [可能会调整这里的措辞](http://wg21.link/lwg2393),但不会影响这个答案(除了可能将`Callable`重命名为`Lvalue-Callable`). (2认同)