可能重复:
将本地类与 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);
那么,本地定义的函数对象呢?