07/05/30 00:41:06
>247
>250
脊髄反射で全くはずれた事を書きそうになったけど、ちょい調べてみた。
↓の通り、基本的に lambda は参照ではなくてコピーした値を保持している。
URLリンク(www.boost.org)
が、(↑にも書いてあるけど)複合代入演算子の左辺は参照で保存される(当たり前)。
で、(多分実装の手抜きのため?)左辺と右辺で参照か値かが異なる場合が対応されていないため、
/= の右辺も(const だけど)参照で受けてしまう。
cf. lambda/detail/operators.hpp
そのため、
_1 /= *max_element (c0.begin (), c0.end ())
の代わりに
_1 = _1 / *max_element (c0.begin (), c0.end ())
とすると、結果が c1 と同じになる。