• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <iterator>

    std::basic_const_iterator::コンストラクタ

    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};
    }
    

    出力

    バージョン

    言語

    • C++23

    処理系

    参照