Namespaces
Variants

std::ranges::view_interface<D>:: data

From cppreference.net
Ranges library
Range adaptors
constexpr auto data ( )
requires std:: contiguous_iterator < ranges:: iterator_t < D >> ;
(1) (C++20以降)
constexpr auto data ( ) const

requires ranges:: range < const D > &&

std:: contiguous_iterator < ranges:: iterator_t < const D >> ;
(2) (C++20以降)

data() メンバ関数のデフォルト実装は、 std::to_address を介して先頭イテレータが示すアドレスを取得します。これは、ビューが空でない場合、 contiguous_iterator によって暗示される連続ストレージの最下位アドレスでもあります。

1) derived static_cast < D & > ( * this ) と定義する。 return std:: to_address ( ranges:: begin ( derived ) ) ; と等価。
2) (1) と同様だが、 derived static_cast < const D & > ( * this ) である点が異なる。

目次

翻訳内容: - 「Contents」→「目次」 - HTMLタグ、属性、
タグ内のテキストは翻訳せず
- C++専門用語(Return value、Notes、Example、See also)は翻訳せず
- 元のフォーマットを保持

戻り値

開始イテレータによって示されるアドレス。

注記

以下の派生型は data() のデフォルト実装を使用する可能性があります:

以下の型は std::ranges::view_interface から派生しており、自身の data() メンバ関数を宣言していませんが、デフォルトの実装を使用できません。なぜなら、それらのイテレータ型が contiguous_iterator を決して満たさないためです:

#include <array>
#include <iostream>
#include <ranges>
#include <string_view>
int main() {
    constexpr std::string_view str { "Hello, C++20!" };
    std::cout << (str | std::views::drop(7)).data() << '\n';
    constexpr static std::array a { 1,2,3,4,5 };
    constexpr auto v { a | std::views::take(3) };
    static_assert( &a[0] == v.data() );
}

出力:

C++20!

関連項目

(C++17)
基となる配列へのポインタを取得する
(関数テンプレート)
連続範囲の先頭へのポインタを取得する
(カスタマイゼーションポイントオブジェクト)
読み取り専用連続範囲の先頭へのポインタを取得する
(カスタマイゼーションポイントオブジェクト)
(C++20)
ポインタライクな型から生ポインタを取得する
(関数テンプレート)