[英]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.