<type_traits>
中有这些:
is_pointer<>
is_function<>
is_member_function_pointer<>
但这不是:
is_function_pointer<>
为什么会这样呢?
最佳答案
[meta.unary.cat]中的特征旨在将每种类型归为一个类别。它是void,整数,指针等吗?在此级别上,指向函数的指针与指向int的指针没有什么不同。请注意,指向成员的指针不是指针。它只是一个英语同音异义词。
打算让每种类型都对[meta.unary.cat]中的一个特征完全返回true。在这种分类中,在is_pointer
下,函数指针和标量指针都将返回true。
我将指出,我们没有实现我们的目标。 nullptr_t
逃脱了我们的目标。但是我们接近了。 Here是当前type_traits分类的图形表示。
更新:
这是一个正常工作的程序,具有正确的输出:
#include <iostream>
#include <type_traits>
typedef void (*fptr)();
typedef int* intptr;
int main()
{
std::cout << std::is_function<fptr>::value << '\n';
std::cout << std::is_pointer<fptr>::value << '\n';
std::cout << std::is_pointer<intptr>::value << '\n';
}
0
1
1
关于c++ - is_function_pointer <>用于<type_traits>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6560590/