簡體   English   中英

如何定義范圍 R 和范圍的項目類型 T 的 cpp 模板?

[英]How do I define a cpp template of a range R and item type T of the range?

我想定義一個模板函數,它接受元素類型的范圍和函數。

像這樣:

template<std::ranges::range R, R::element_t T>
void apply_on_pairs(const R &r, function<void(const T&, const T&)>f) { ... }

其中 T 是元素類型或 R。

如何定義 T 和 R 以使上述關系存在? 或者更好的是,我如何根據 R 定義 T 或根據 T 定義 R?

您可以使用range_value_t ,它將為您推斷范圍的元素類型。

#include <functional>
#include <ranges>
#include <vector>

template<std::ranges::range R>
void apply_on_pairs(
  const R& r,
  std::function<void(
    const std::ranges::range_value_t<R>&, 
    const std::ranges::range_value_t<R>&)> f) { }

int main() {
  apply_on_pairs(std::vector{42}, [](auto, auto){});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM