首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对可变函数中的所有参数调用std::forward?

如何对可变函数中的所有参数调用std::forward?
EN

Stack Overflow用户
提问于 2010-05-13 01:28:12
回答 1查看 48.2K关注 0票数 126

我刚刚编写了一个通用对象工厂,并使用boost预处理器元库来制作一个可变模板(使用2010,但它不支持它们)。我的函数使用rval引用和std::forward来做完美的转发,它让我得到了thinking...when,C++0X出来了,我有一个标准的编译器,我会用真正的可变模板来做这件事。但是,我如何对参数调用std::forward呢?

代码语言:javascript
复制
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
    y(std::forward(...params)); //? - I doubt this would work.
}

我能想到的唯一方法是手动解压...params,而我也还没有完全做到这一点。有没有更快的语法可以工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-13 01:31:30

你会这样做:

代码语言:javascript
复制
template <typename ...Params>
void f(Params&&... params)
{
    y(std::forward<Params>(params)...);
}

...的意思是“取左边的内容,并对每个模板参数进行相应的解包。”

票数 187
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2821223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档