gpt4 book ai didi

c++ - C++将模板化函数应用于元组的每个元素

转载 作者:行者123 更新时间:2023-12-01 15:12:26 25 4
gpt4 key购买 nike

template<typename T>
void print(T& t)
{
std::cout << t << std::endl;
}

template<typename ... Args>
class Container
{

public:

Container(Args&& ... args)
: values_(std::forward<Args>(args)...)
{}

template<int INDEX>
typename std::tuple_element<INDEX, std::tuple<Args...> >::type& get()
{
return std::get<INDEX>(values_);
}

void display()
{
// (obviously) does not compile !
std::apply(print,values_);
}

private:
std::tuple<Args ...> values_;

};
上面的代码显示了意图,但是不正确(在注释中),因为函数“print”需要模板。
是否有一种方法可以调用(适当模板化的)打印函数到元组values_的每个元素?
运行代码: https://onlinegdb.com/SJ78rEibD

最佳答案

您需要像下面这样将元组解压缩到apply中:

void display()
{
std::apply([](auto ...ts) { (..., print(ts)); },values_);
}
这是 demo
请注意,此解决方案使用fold-expression来简化语法。

关于c++ - C++将模板化函数应用于元组的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63308619/

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