template<class I>
concept has-arrow = // 説明専用コンセプト
input_iterator<I> && (is_pointer_v<I> || requires(const I i) { i.operator->(); });
概要
has-arrowは、型Iについてstd::input_iteratorを満たす上で、アロー演算子が使用可能であることを表す説明専用コンセプトである。
C++20 のイテレータ定義であるコンセプトたちではアロー演算子を提供することを要求していないため、別途用意されていると考えられる。
バージョン
言語
- C++20
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??
参照
- LWG Issue 4112.
has-arrowshould requireoperator->()to be const-qualified- C++26で、
requires式の引数がconst Iとなり、operator->()がCV修飾された状態で呼び出せることを要求するようになった
- C++26で、