可调用概念和std::is_function类型特征之间的区别是什么

What is the difference between Callable concept and the std::is_function type traits?

本文关键字:特征 类型 之间 是什么 区别 function is 调用 std      更新时间:2023-10-16

C++17将有一个Callable概念,我想知道std::is_function<T>::valuetrue的类型到底有什么区别。它们等效吗?一个是另一个的超集吗?

C++17将有一个Callable概念

它从C++11开始就存在于标准中。

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

不,事实上,它们是完全脱节的。Callable仅适用于对象类型,包括从指向成员的指针到重载operator()的类型,再到隐式转换为函数指针到函数指针本身的类型的所有内容。

is_function仅适用于实际的函数类型,根据定义,这些函数类型不是对象类型。