GeezerVison is showing cpprefjp.github.io — std::basic_const_iterator::コンストラクタ - cpprefjp C++日本語リファレンス
最終更新日時:
2025年07月09日 00時33分39秒 (JST)
Akira Takahashi
が更新
履歴
編集
function
<iterator>
std:: basic_const_iterator:: コンストラクタ (C++23)
constexpr basic_const_iterator () requires default_initializable < Iterator > = default ; // (1)
constexpr basic_const_iterator ( Iterator current ); // (2)
template < convertible_to < Iterator > U >
constexpr basic_const_iterator ( basic_const_iterator < U > current ); // (3)
template < different-from < basic_const_iterator > T >
requires convertible_to < T , Iterator >
constexpr basic_const_iterator ( T && current ); // (4)
概要
basic_const_iteratorオブジェクトを構築する。
効果
ラップするイテレータをcurrent_というメンバに保持するとして
(1) : current_をデフォルト構築する
(2) : current_をstd::move(current)で初期化する
(3) : current_をstd::move(current.current_)で初期化する
(4) : current_をstd::forward<T>(current)で初期化する
例
#include <iterator>
#include <vector>
// 例示のための単純なイテレータラッパ、ラップするイテレータへの暗黙変換を提供する
template < typename I >
struct wrap_iter {
I it ;
operator I () const {
return it ;
}
};
int main () {
using I = std::vector < int >:: iterator ;
std::vector < int > vec = { 1 , 2 , 3 , 4 , 5 };
// (1) デフォルトコンストラクタ
std :: basic_const_iterator < I > ci1 {};
// (2) イテレータから構築
std :: basic_const_iterator ci2 { vec . begin ()};
// (3) 別のbasic_const_iterator から変換して構築(コピーコンストラクタ)
std :: basic_const_iterator < I > ci3 { ci2 };
wrap_iter wrap { ci2 };
// (4) Iteratorに変換可能な型から構築
std :: basic_const_iterator < I > ci4 { wrap };
}
出力
バージョン
言語
処理系
参照