Skip to content

Latest commit

 

History

History
36 lines (28 loc) · 1.19 KB

possibly-const-range.md

File metadata and controls

36 lines (28 loc) · 1.19 KB

possibly-const-range

  • 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

参照