代码之家  ›  专栏  ›  技术社区  ›  Navie

是否将prvalue移动到函数模板uref参数中?

  •  0
  • Navie  · 技术社区  · 7 年前

    我的问题是,将prvalue移动(或不移动)到相应地采用通用引用T&的catch-all函数模板中是否有意义&在其签名中。此外,我还想知道复制-移动-删除/RVO是否在这一决策中发挥了作用。

    问题: 引用折叠是否会导致使用T&调用foo&(右值参考)带或不带std::move,RVO对其有影响吗(或对RVO有影响)?

    template < typename T >
    void foo(T&& arg)
    {
        //Whatever..
    }
    
    A func()
    {
        A m;
        return m;
    }
    
    // called anywhere you like
    foo(std::move(func()));
    

    提前感谢 山姆

    1 回复  |  直到 7 年前
        1
  •  1
  •   T.C. Yksisarvinen    7 年前

    那个 move 除了让编译器、优化器和代码的读者做更多无意义的工作之外,没有任何效果。

    不要这样做。