0

可能重复:
将本地类与 STL 算法一起使用

我正在尝试将本地定义的函数对象传递给 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);

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

4

0 回答 0