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