C ++ 17将有一个Callable
概念,我想知道std::is_function<T>::value
为true
的类型究竟有什么不同。它们是等价的吗?是另一个的超集吗?
答案 0 :(得分:13)
C ++ 17将具有
Callable
概念
自C ++ 11以来,它就在标准中。
他们是等同的吗?一个是另一个的超集吗?
不,实际上,它们是完全不相交的。 Callable
仅适用于对象类型,并且包括从指针到成员到具有重载operator()
的类型的所有类型,其中隐式转换为函数指针本身的函数指针。
is_function
仅适用于实际的函数类型,根据定义,它们不是对象类型。