namespace std::ranges {
template<range R>
using range_common_reference_t = iter_common_reference_t<iterator_t<R>>;
}
概要
任意のRange型Rから、そのRangeのイテレータの共通参照型(iter_common_reference_t)を取得する。
備考
- このエイリアステンプレートはC++23に対する欠陥報告 (LWG 3860) として追加されたものであり、コンパイラは早期に対応している場合がある。そのため、C++20モードでも使用できる可能性がある。
例
#include <ranges>
#include <vector>
int main() {
static_assert(std::same_as<std::ranges::range_common_reference_t<std::vector<int>>, int&>);
}
出力
バージョン
言語
- C++23
処理系
- Clang: 21 ✅
- GCC: 14.3 ✅
- Visual C++: 2022 Update 7 ✅
参照
- LWG Issue 3860.
range_common_reference_tis missing- C++23で、
range_reference_t・range_const_reference_t・range_rvalue_reference_tに対応するrange_common_reference_tが<ranges>に追加された。この仕様はC++23で導入されたが、欠陥報告 (DR) であるためコンパイラは早期に対応しており、C++20モードでも使用できる場合がある
- C++23で、