我可以使用 C++03 标准库功能模拟一个空的 lambda 吗?
Can I simulate an empty lambda with C++03 standard library features?
我坚持使用 GCC 4.4,所以尽管在我的代码库中引入了 -std=c++0x
,但我没有使用 lambdas。
是否有等效于空 lambda [](){}
的 C++03,我可以安全地将其用作具有某种类型 Callback
的泛型参数的默认参数?
我问是因为旧的 std::plus
、std::less
等很方便,但我似乎找不到空操作,void
-返回等价物。
struct noop {
static void do_nothing(){};
void operator()()const{};
typedef void(*pf)();
operator pf()const { return do_nothing; }
};
noop()
相当等同于 [](){}
.
它甚至可以像 noop lambda 那样转换为函数指针。
我坚持使用 GCC 4.4,所以尽管在我的代码库中引入了 -std=c++0x
,但我没有使用 lambdas。
是否有等效于空 lambda [](){}
的 C++03,我可以安全地将其用作具有某种类型 Callback
的泛型参数的默认参数?
我问是因为旧的 std::plus
、std::less
等很方便,但我似乎找不到空操作,void
-返回等价物。
struct noop {
static void do_nothing(){};
void operator()()const{};
typedef void(*pf)();
operator pf()const { return do_nothing; }
};
noop()
相当等同于 [](){}
.
它甚至可以像 noop lambda 那样转换为函数指针。