最終更新日時(UTC):
が更新

履歴 編集

function
<ranges>

std::ranges::elements_view::推論補助(C++20)

namespace std::ranges {
  template<class R, size_t N>
  elements_view(R&&, const integral_constant<size_t, N>&) ->
    elements_view<views::all_t<R>, N>; // (1) C++20 (削除)

  template<class R, size_t N>
  elements_view(R&&) -> elements_view<views::all_t<R>, N>;  // (2) C++23
}

概要

elements_viewクラステンプレートの型推論補助。

  • (1) : C++20で導入されたが、C++23で削除された
  • (2) : C++23で導入された新しい推論補助

備考

C++20では、elements_viewは第2引数としてintegral_constantを受け取っていたが、C++23からはテンプレート引数としてNを直接指定するように変更された。

#include <ranges>
#include <map>
#include <string>
#include <type_traits>

int main() {
  std::map<int, std::string> m = {{1, "one"}, {2, "two"}, {3, "three"}};

  // C++23以降の使用方法
  std::ranges::elements_view<std::views::all_t<std::map<int, std::string>&>, 0> ev{m};

  // 推論された型を確認
  static_assert(std::same_as<
    decltype(ev),
    std::ranges::elements_view<std::ranges::ref_view<std::map<int, std::string>>, 0>
  >);
}

出力

バージョン

言語

  • C++20: (1)
  • C++23: (2)

処理系

関連項目

参照