【发布时间】:2012-11-27 03:33:47
【问题描述】:
我想写一个名为is_pure_func_ptr的trait-checker,它可以判断类型是否为纯函数指针,如下:
#include <iostream>
using namespace std;
void f1()
{};
int f2(int)
{};
int f3(int, int)
{};
struct Functor
{
void operator ()()
{}
};
int main()
{
cout << is_pure_func_ptr<decltype(f1)>::value << endl; // output true
cout << is_pure_func_ptr<decltype(f2)>::value << endl; // output true
cout << is_pure_func_ptr<decltype(f3)>::value << endl; // output true
cout << is_pure_func_ptr<Functor>::value << endl; // output false
cout << is_pure_func_ptr<char*>::value << endl; // output false
}
我的问题是:如何实现?
【问题讨论】:
-
“纯”到底是什么意思?对于纯粹的一些定义,Functor 对我来说看起来很纯粹。
-
@Mat,我的例子是为了定义什么是“纯函数指针”。
-
问题是,pure functions 是一个成熟的术语。所以你的问题有点混乱。如果这就是您的意思,也许可以替换为“普通/顶级函数,而不是成员函数、lambda 或其他可调用对象”?
-
是的,你的意见是正确的。
标签: c++ function function-pointers functor typetraits