|
分類:[C/C++]
struct pred
{
pred(int){}; ←(A)
void operator()(int v) const
{
std::cout << v << "\n";
}
};
boost::function_output_iterator<pred> fi(pred(0));←こうするには(A)が必要
boost::function_output_iterator<pred> fi(pred());←(A)を消してこう書くことができない←(B)
std::vector<int> v(boost::counting_iterator<int>(0),boost::counting_iterator<int>(10));
std::copy(v.begin(), v.end(), fi);←(B)だとここでエラー
error C2296: '+' : 無効です。左オペランドには型 'boost::function_output_iterator<UnaryFunction> ' が指定されています。
c:\program files\microsoft visual studio 9.0\vc\include\xutility 2483
std::copy(v.begin(), v.end(), boost::make_function_output_iterator(pred()));←これだと(A)がなくてもOK
make_function_output_iteratorは(B)と同じことしているんじゃないの?
|