c++ - The following code does not work -
i using msvc 2012 , when compile program below says:
the term not evaluate function taking 0 arguments
i sure problem mem_fun , mem_fun_ref function call. please provide correct way call functions.
#include<iostream> #include<algorithm> #include<functional> #include<string> #include<vector> #include<iterator> using namespace std; #define print(a, sp) copy(a.begin(), a.end(), ostream_iterator<decltype(*a.begin())>(cout, sp)) struct generate { int a; generate(int a) : a(a) { } generate gen() { return generate(rand()%100); } void testing() { vector<generate> a(5), b, c; generate(a.begin(), a.end(), mem_fun(&generate::gen)); generate_n(back_inserter(b), 5, mem_fun_ref(&generate::gen)); } }; void main() { generate a(32); a.testing(); }
something of form
auto f = mem_fun(&generate::gen); generates function takes argument of type generate:
auto f = mem_fun(&generate::gen); generate g; auto x = f(g); whereas std::generate_n requires functor taking no arguments.
it looks need of form
std::bind(&generate::gen, this)
Comments
Post a Comment