我的问题如下:我有一个类声明如下:
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的新手),所以在这一点上我很困惑。
我怎样才能把这些论据一个一个地弄清楚呢?如有任何帮助,我将不胜感激。
3条答案
按热度按时间wfsdck301#
捕获临时元组(Live at Coliru)中的参数:
std::forward_as_tuple
使用完全转发来捕获对args
的引用,因此不应存在复制。hmae6n7t2#
可以使用递归。
下面是一个例子:
watbbzwu3#
一些辅助模板可以帮你做到这一点,我不知道stl中有哪个模板可以直接做到这一点,但我还是喜欢使用我自己的模板:
然后,您可以像这样使用它:
或者在您的情况下: