ここに私のコードです: 結果は1,2,3,4,5,6でなければなりませんが、まだ1,2,3,1,2,3です.Linuxで動かすと正しいです。誰が私に真実を伝えることができます。ファンクタを参照して渡します。私はVS2012で実行しますが、なぜエラーが発生しますか?
class IntSequence {
private:
int value;
public:
IntSequence(int initialValue) : value(initialValue){}
int operator()() {
return value++;
}
};
int main()
{
list<int> coll;
IntSequence seq(1);
generate_n<back_insert_iterator<list<int> > , int , IntSequence& >
(back_inserter(coll) , 3 ,seq);//result is 1,2,3
generate_n (back_inserter(coll) , 3 ,seq);//result should be 1,2,3,4,5,6,but it is still 1,2,3,1,2,3
}
@songyuanyaoこれは現在、このコードをvs –
と組み合わせて使用しています。@songyuanyao私は自分の答えを更新しました。これがバグかどうかわかりません。 – Jts
OK、ありがとう –