我可以使用C ++ 03标准库功能模拟空lambda吗?

时间:2016-07-12 15:57:53

标签: c++ c++03

我坚持使用GCC 4.4,所以尽管向我的代码库引入-std=c++0x但没有使用lambdas。

是否有一个C ++ 03相当于一个空的lambda [](){},我可以安全地使用它作为类型为Callback的泛型参数的默认参数?

我问,因为旧的std::plusstd::less等方便,但我似乎无法找到无操作,void - 返回等价物。

1 个答案:

答案 0 :(得分:5)

struct noop {
  static void do_nothing(){};
  void operator()()const{};
  typedef void(*pf)();
  operator pf()const { return do_nothing; }
};

noop()非常相当于[](){}

它甚至可以像noop lambda一样转换为函数指针。