• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <iterator>

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

    constexpr common_iterator() requires default_initializable<I> = default;  // (1)
    
    constexpr common_iterator(I i);                               // (2)
    
    constexpr common_iterator(S s);                               // (3)
    
    template<class I2, class S2>
      requires convertible_to<const I2&, I> &&
               convertible_to<const S2&, S>
    constexpr common_iterator(const common_iterator<I2, S2>& x);  // (4)
    

    概要

    common_iteratorオブジェクトを構築する。

    事前条件

    効果

    I, Sの値のどちらかをvariant<I, S>型のメンバ変数v_に保持するとする。

    #include <iostream>
    #include <iterator>
    #include <ranges>
    
    int main() {
      auto seq = std::views::iota(1) | std::views::take(5);
    
      using CI = std::common_iterator<std::ranges::iterator_t<decltype(seq)>, std::ranges::sentinel_t<decltype(seq)>>;
    
      auto i = std::ranges::begin(seq);
      auto s = std::ranges::end(seq);
    
      // (1) デフォルトコンストラクタ
      CI ci1{};
    
      // (2) イテレータから構築
      CI ci2{i};
    
      // (3) 番兵から構築
      CI ci3{s};
    
      // (3) コピーコンストラクタ
      CI ci4{ci2};
    }
    

    出力

    バージョン

    言語

    • C++20

    処理系

    関連項目

    参照