新しいコンパイラにアップグレードしてコンパイラ エラーを解決しboost::fusion::for_each
ているときに、渡された関数オブジェクトに operator が必要であることに気付きましたconst
。
Boostの例:
struct increment
{
template<typename T>
void operator()(T& t) const
{
++t;
}
};
...
vector<int,int> vec(1,2);
for_each(vec, increment());
これはもちろん変わっていません。std::for_each
演算子が である必要がない とは違うことに気づきませんでしたconst
。
struct increment
{
template<typename T>
void operator()(T& t) // no const here!!!
{
++t;
}
};
std::vector<int> numbers;
std::for_each(numbers.begin(), numbers.end(), increment());
を必要とする明確な理由はありconst
ますか? 明らかにそれを変更することはできませんが、これら 2 つの違いの理由を理解したいと思います。
洞察と説明をありがとう!