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

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -