代码之家  ›  专栏  ›  技术社区  ›  Edward Strange

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

  •  85
  • Edward Strange  · 技术社区  · 16 年前

    我刚刚编写了一个通用对象工厂,并使用boost预处理器元库来创建一个可变模板(使用2010,它不支持它们)。我的函数使用rval引用和 std::forward

    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的包装,我也还不太清楚。有没有更快捷的语法?

    1 回复  |  直到 8 年前
        1
  •  177
  •   GManNickG    16 年前

    你应该做:

    template <typename ...Params>
    void f(Params&&... params)
    {
        y(std::forward<Params>(params)...);
    }
    

    这个 ...