当前位置:  开发笔记 > 编程语言 > 正文

std :: move或std :: forward,参数为std :: unique_ptr <T> &&

如何解决《std::move或std::forward,参数为std::unique_ptr<T>&&》经验,为你挑选了1个好方法。

我有一个名为PushC++ 11中编写的方法的以下模板类(剥离以仅包含相关部分):

template
class CircularStack
{
private:
    std::array, Capacity> _stack;

public:
   void Push(std::unique_ptr&& value)
   {
      //some code omitted that updates an _index member variable

      _stack[_index] = std::move(value);
   }
}

我的问题是:

我应该使用std::move还是std::forward在内Push

我不确定是否std::unique_ptr&&有资格作为通用参考,因此应该使用forward而不是move.

我是C++的新手.



1> TartanLlama..:

你应该用std::move.

std::unique_ptr&&是一个右值引用,而不是转发引用*.转发在功能参数引用必须像T&&这里T推导,即函数的模板参数被声明.

*转发引用是您称之为通用引用的首选名称.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有