- ranges[meta header]
- std::ranges[meta namespace]
- subrange[meta class]
- function[meta id-type]
- cpp20[meta cpp]
[[nodiscard]]
constexpr subrange
prev(iter_difference_t<I> n = 1) const
requires bidirectional_iterator<I>; // (1) C++20
constexpr subrange
prev(iter_difference_t<I> n = 1) const
requires bidirectional_iterator<I>; // (1) C++26
- nodiscard[link /lang/cpp17/nodiscard.md]
- iter_difference_t[link /reference/iterator/iter_difference_t.md]
- bidirectional_iterator[link /reference/iterator/bidirectional_iterator.md]
- subrange[link ../subrange.md]
先頭を後退させたsubrange
を得る。
auto tmp = *this;
tmp.advance(-n);
return tmp;
- advance[link advance.md]
#include <ranges>
#include <iostream>
template<std::ranges::range R>
void print(const R& r) {
for (int x : r) {
std::cout << x << ',';
}
std::cout << '\n';
}
int main()
{
constexpr int a[] = {1, 2, 3, 4, 5};
std::ranges::subrange sub(a + 3, a + 4);
print(sub);
print(sub.prev());
print(sub.prev().prev());
}
4,
3,4,
2,3,4,
- C++20
- Clang: 13.0.0 [mark verified]
- GCC: 10.1.0 [mark verified]
- ICC: ?
- Visual C++: 2019 Update 10 [mark verified]
- N4861 24 Ranges library
- C++20 ranges
- P2422R1 Remove
nodiscard
annotations from the standard library specification- C++26で
[[nodiscard]]
指定が削除された
- C++26で