gpt4 book ai didi

c++ - 在可变参数模板类型列表的每种类型上运行的函数

转载 作者:行者123 更新时间:2023-12-01 14:42:11 24 4
gpt4 key购买 nike

我已经定义了一个这样的类型列表:

template <typename ... Types> struct typelist {};

using my_list = typelist<int, double, bool, float>;
现在我有一个功能模板,例如
template<typename T>
void foo() {
std::cout << typeid(T).name() << std::endl;
}
并希望为类型列表中的每种类型调用此方法:
foo<int>();
foo<double>();
foo<bool>();
foo<float>();
我试图找到一种递归的方法来解决此问题,但是我无法为所需的foo函数定义正确的(可能是嵌套的)可变参数模板。您是否有解决此问题的巧妙方法的暗示?

最佳答案

template<class... Types> auto foo_foreach(typelist<Types...>) {
return (foo<Types>(), ...);
}

int main() {
foo_foreach(my_list{});
}
对于真正的老式学校来说,请使用您之前尝试过的模板递归:
void foo_foreach(typelist<>) {}

template<class Head, class... Tail> void foo_foreach(typelist<Head, Tail...>);

template<class Head, class... Tail> void foo_foreach(typelist<Head, Tail...>) {
foo<Head>();
foo_foreach(typelist<Tail...>{});
}

关于c++ - 在可变参数模板类型列表的每种类型上运行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63594125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com