最終更新日時:
が更新

履歴 編集

function
<ranges>

std::ranges::filter_view::sentinel::コンストラクタ(C++20)

public:
  sentinel() = default;                             // (1)

private:
  constexpr explicit sentinel(filter_view& parent); // (2) 説明専用

概要

filter_view::sentinelオブジェクトを構築する。

  • (1) : デフォルトコンストラクタ
  • (2) : privateな説明専用コンストラクタ。filter_viewend()から呼び出される

効果

#include <ranges>
#include <iostream>
#include <concepts>

int main()
{
  // take_while_viewは非common_rangeなので、filter_viewのend()は番兵を返す
  auto base = std::views::iota(1)
            | std::views::take_while([](int i) { return i <= 10; });
  auto fv = base | std::views::filter([](int i) { return i % 2 == 0; });

  // (2) filter_viewのend()から番兵が構築される
  auto se = fv.end();

  // (1) デフォルト構築が可能
  static_assert(std::default_initializable<decltype(se)>);

  for (auto it = fv.begin(); it != se; ++it) {
    std::cout << *it;
  }
  std::cout << std::endl;
}

出力

246810

バージョン

言語

  • C++20

処理系

参照