最終更新日時: 2026年05月21日 15時03分06秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<ranges>

# std::ranges::take_view::reserve_hint(C++26)

    constexpr auto reserve_hint();       // (1) C++26
    constexpr auto reserve_hint() const; // (2) C++26

## 概要

要素数の近似値を取得する。

`take_view`は元のRangeから先頭 N 個を取り出すため、近似値も「元のRangeの`reserve_hint`と N の最小値」となる。元のRangeが`approximately_sized_range`でない場合は N を返す。

`take_view`は`size`と同様、元のRangeが`approximately_sized_range`でなくとも常に`reserve_hint`を提供する。

## 効果

以下と等価：

    if constexpr (approximately_sized_range<V>) {
      auto n = static_cast<range_difference_t<V>>(ranges::reserve_hint(base_));
      return to-unsigned-like(ranges::min(n, count_));
    }
    return to-unsigned-like(count_);

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌

## 参照

- P2846R6 `reserve_hint`: Eagerly reserving memory for not-quite-sized lazy ranges