- ranges[meta header]
- std::ranges[meta namespace]
- function[meta id-type]
- cpp23[meta cpp]
namespace std::ranges {
template<input_range R>
constexpr auto& possibly-const-range(R& r) noexcept {
if constexpr (constant_range<const R> && !constant_range<R>) {
return const_cast<const R&>(r);
} else {
return r;
}
}
}
- input_range[link /reference/ranges/input_range.md]
- constant_range[link /reference/ranges/constant_range.md]
possibly-const-range
は入力のinput_range
オブジェクトr
を、可能なら要素が定数化されたrange
へ変換するものである。
主に、ranges::cbegin()
など定数イテレータを取得したい場所で、イテレータ取得前の段階でrange
型の簡単な変換のみで定数イテレータを取得できるかを試行するのに使用される。
- C++23