◐ Shell
clean mode source ↗

std::span<T,Extent>::span - cppreference.com

提供: cppreference.com

<tbody> </tbody>

constexpr span() noexcept;

(1)

constexpr span(pointer ptr, size_type count);

(2)

constexpr span(pointer first, pointer last);

(3)

template <std::size_t N> constexpr span(element_type (&arr)[N]) noexcept;

(4)

template <std::size_t N> constexpr span(std::array<value_type, N>& arr) noexcept;

(5)

template <std::size_t N> constexpr span(const std::array<value_type, N>& arr) noexcept;

(6)

template <class Container> constexpr span(Container& cont);

(7)

template <class Container> constexpr span(const Container& cont);

(8)

template <class U, std::size_t N> constexpr span(const std::span<U, N>& s) noexcept;

(9)

constexpr span(const span& other) noexcept = default;

(10)

span を構築します。

1) 空のスパンを構築します。 data() == nullptr および size() == 0 となります。 このオーバーロードは、extent == 0 || extent == std::dynamic_extent である場合にのみ、オーバーロード解決に参加します。

2) 範囲 [ptr, ptr + count) に対するビューとなるスパンを構築します。 結果のスパンは data() == ptr および size() == count となります。 [ptr, ptr + count) が有効な範囲でない場合、または extent != std::dynamic_extent && count != extent の場合、動作は未定義です。

3) 範囲 [first, last) に対するビューとなるスパンを構築します。 span(first, last - first) と同等です。

4-6) 配列 arr に対するビューとなるスパンを構築します。 結果のスパンは size() == N および data() == std::data(arr) となります。 これらのオーバーロードは、extent == std::dynamic_extent || N == extenttrue であり、 std::remove_pointer_t<decltype(std::data(arr))>(*)[]element_type (*)[] に変換可能である場合にのみ、オーバーロード解決に参加します。

7-8) 範囲 [std::data(cont), std::data(cont) + std::size(cont)) に対するビューとなるスパンを構築します。 結果のスパンは size() == std::size(cont) および data() == std::data(cont) となります。 それが有効な範囲でない場合、または extent != std::dynamic_extent && std::size(cont) != extent となる場合、動作は未定義です。

これらのオーバーロードは、

  • Containerstd::span の特殊化でなく、 std::array の特殊化であるか配列型である
  • std::data(cont) および std::size(cont) がどちらも well-formed である
  • std::remove_pointer_t<decltype(std::data(cont))>(*)[]element_type (*)[] に変換可能である

場合にのみ、オーバーロード解決に参加します

9) 別のスパンからの変換コンストラクタ。 結果のスパンは size() == s.size() および data() == s.data() となります。 このオーバーロードは、extent == std::dynamic_extent || N == extenttrue であり、 U (*)[]element_type (*)[] に変換可能である場合にのみ、オーバーロード解決に参加します。

10) デフォルト化されたコピーコンストラクタ。 サイズとデータポインタをコピーします。 結果のスパンは size() == other.size() および data() == other.data() となります。

引数

ptr, first - シーケンスの最初の要素を指すポインタ
count - シーケンスの要素数
last - シーケンスの最後の要素の次のポインタ
arr - ビューを構築する配列
cont - ビューを構築するコンテナ
s - 変換元の別のスパン
other - コピー元の別のスパン

例外

2-3) 例外を投げません。

7-8) std::size(cont) および std::data(cont) が例外を投げた場合、それを投げます。

関連項目