- ranges[meta header]
- std::ranges[meta namespace]
- type-alias[meta id-type]
- cpp23[meta cpp]
namespace std::ranges {
template<range R>
using range_common_reference_t = iter_common_reference_t<iterator_t<R>>;
}- iter_common_reference_t[link /reference/iterator/iter_common_reference_t.md]
任意の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&>);
}- std::ranges::range_common_reference_t[color ff0000]
- C++23
- Clang: 21 [mark verified]
- GCC: 14.3 [mark verified]
- Visual C++: 2022 Update 7 [mark verified]
- 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で、