gpt4 book ai didi

c++ - 可变参数模板,获取函数参数值

转载 作者:太空狗 更新时间:2023-10-29 23:51:23 25 4
gpt4 key购买 nike

我的问题如下:我有一个这样声明的类:

template<typename ReturnType, typename... Args>
class API
{
ReturnType operator()(Args... args)
{
// Get argument 0
// Get argument 1
}
};

我需要一个一个地获取参数,到目前为止我想出的唯一方法(但我无法让它工作)是使用 std::get ,因此:

std::get<0>(args);

当然,这会导致很多错误。我是可变参数模板(以及 C++11 的新手)所以在这一点上我很迷茫。

我怎样才能一个一个地得到这些参数?任何帮助将不胜感激。

最佳答案

在临时元组 (Live at Coliru) 中捕获参数:

ReturnType operator()(Args... args)
{
static_assert(sizeof...(args) >= 3, "Uh-oh, too few args.");
// Capture args in a tuple
auto&& t = std::forward_as_tuple(args...);
// Get argument 0
std::cout << std::get<0>(t) << '\n';
// Get argument 1
std::cout << std::get<1>(t) << '\n';
// Get argument 2
std::cout << std::get<2>(t) << '\n';
}

std::forward_as_tuple 使用完美转发来捕获对 args 的引用,因此不应该有复制。

关于c++ - 可变参数模板,获取函数参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565578/

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