Skip to content

Latest commit

 

History

History
60 lines (49 loc) · 1.26 KB

begin.md

File metadata and controls

60 lines (49 loc) · 1.26 KB

begin

  • ranges[meta header]
  • std::ranges[meta namespace]
  • subrange[meta class]
  • function[meta id-type]
  • cpp20[meta cpp]
constexpr I begin() const requires copyable<I>;             // (1)

[[nodiscard]] constexpr I begin() requires (!copyable<I>);  // (2)
  • copyable[link /reference/concepts/copyable.md]
  • nodiscard[link /lang/cpp17/nodiscard.md]

概要

先頭要素を指すイテレータを取得する。

効果

  • (1): return begin_;
  • (2): return std::move(begin_);

ただし、begin_subrangeが内部で保持するイテレータ。

#include <ranges>
#include <iostream>

int main()
{
  constexpr int a[] = {1, 2, 3};
  const std::ranges::subrange sub(a);
  // .begin と .end を暗黙的に使用
  for (int x : sub) {
    std::cout << x << '\n';
  }
}

出力

1
2
3

バージョン

言語

  • C++20

処理系

  • Clang: 13.0.0 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ?
  • Visual C++: 2019 Update 10 [mark verified]

参照