constexpr auto end()
requires (!simple-view <V>); // (1) C++23
constexpr auto end() const
requires range<const V>; // (2) C++23
概要
番兵を取得する。
戻り値
メンバ変数r_
として保持しているRangeへのポインタがあるとして、以下を返す:
if constexpr (common_range<V>) {
return std::move_iterator(ranges::end(base_));
}
else {
return std::move_sentinel(ranges::end(base_));
}
例
#include <iostream>
#include <vector>
#include <ranges>
int main() {
std::vector<std::string> v = {"one", "two", "three"};
auto r = std::ranges::as_rvalue_view(v);
auto it = r.begin();
auto end = r.end();
while (it != end) {
std::string x = *it; // ここでムーブされる
std::cout << x << std::endl;
++it;
}
}
出力
one
two
three
バージョン
言語
- C++23
処理系
- Clang: 17 ✅
- GCC: 13 ✅
- ICC: ?
- Visual C++: 2022 Update 4 ✅