Namespaces
Variants

std::counted_iterator<I>:: base

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
constexpr const I & base ( ) const & noexcept ;
(1) (C++20以降)
constexpr I base ( ) && ;
(2) (C++20以降)

基となるベースイテレータを返します。

1) 基盤となるイテレータへの参照を返します。
2) 基盤となるイテレータからの戻り値をムーブ構築します。

目次

パラメータ

(なし)

戻り値

1) 基盤となるイテレータへの参照。
2) 基盤となるイテレータからムーブ構築されたイテレータ。

例外

実装定義の例外をスローする可能性があります。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <type_traits>
#include <vector>
int main()
{
    std::vector<int> v{0, 1, 2, 3, 4};
    std::reverse_iterator<std::vector<int>::iterator> reverse{v.rbegin()};
    std::counted_iterator counted{reverse, 3};
    static_assert(std::is_same<
        decltype(counted.base()),
        std::reverse_iterator<std::vector<int>::iterator> const&
    >{});
    std::cout << "Print with reverse_iterator: ";
    for (auto r = counted.base(); r != v.rend(); ++r)
        std::cout << *r << ' ';
    std::cout << '\n';
    std::cout << "Print with counted_iterator: ";
    for (; counted != std::default_sentinel; ++counted)
        std::cout << counted[0] << ' ';
    std::cout << '\n';
}

出力:

Print with reverse_iterator: 4 3 2 1 0
Print with counted_iterator: 4 3 2

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3391 C++20 base のconstバージョンは基盤イテレータのコピーを返す 参照を返す
LWG 3593 C++20 base のconstバージョンは参照を返すがnoexceptではない可能性がある noexceptに変更

関連項目

指し示す要素にアクセスする
(公開メンバ関数)
終端までの距離を返す
(公開メンバ関数)