在函数中定义的类

时间:2012-12-05 18:33:47

标签: c++ stl

  

可能重复:
  Using local classes with STL algorithms

我正在尝试将本地定义的函数对象传递给STL函数,但它不起作用。它在世界的哪个地方宣称这不应该是可能的?这看起来很吸引我!

这里的代码失败了:

int main() {
  std::vector<int> v;
  struct gen { int operator()(){return 4;} };
  std::cout<<gen()()<<std::endl; // works
  std::generate_n(std::back_inserter(v),4,gen()); // fails
}

顺便提一下,以下方法确实有效,不是因为gen_s是结构,而是因为gen_s :: gen是静态函数。这不是很酷,因为无状态发电机的用途是什么?

std:vector<int> v;
struct gen_s { static int gen() { return 4; };
std::generate_n(std::back_inserter(v),5,gen_s::gen);

那么,本地定义的函数对象呢?

0 个答案:

没有答案