私は MSVC 2012 を使用しています。以下のプログラムをコンパイルすると、次のように表示されます。
この項は、引数を 0 個取る関数として評価されません
mem_fun
問題はandmem_fun_ref
関数呼び出しにあると確信しています。関数を呼び出す正しい方法を提供してください。
#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();
}