Boost.Rangeのドキュメント(および実装)は、const refsを引数とする突然変異アルゴリズムのオーバーロードを示します。例えばBoost.Range's Sort documentationについて示しています突然変異Boost.Rangeアルゴリズムのconstオーバーロードがあるのはなぜですか?
template<class RandomAccessRange>
RandomAccessRange& sort(RandomAccessRange& rng);
template<class RandomAccessRange>
const RandomAccessRange& sort(const RandomAccessRange& rng);
template<class RandomAccessRange, class BinaryPredicate>
RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred);
template<class RandomAccessRange, class BinaryPredicate>
const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred);
過負荷2と4のポイントは何ですか?一時的なものを渡すことができるのはいいことですが、const&
は、この点をちょっと疑問に思っています。 Rvalue-referenceは大歓迎ですが、Boost.Rangeでのサポートはあまりにも侵略的でRange.V3の採用には遅れていることは理解しています(それがBoostの一部であったといいでしょう)。
コンテナの状態は変更できませんが、基になる要素は変更可能であるという意味では 'const'のコンテナのように見えます。 – NathanOliver
' const iterator_pair 'はconst範囲ですが、しかし、それは宛先要素をソートすることができないことを意味しません... –
ildjarn