7
私はこの方法で(のみ関連する部分を含むようにストリップダウン)は、次のテンプレートクラスを持っているがC++ 11で書かれたPush
と呼ばれる:のstd ::移動またはSTDパラメータSTDを進め:: :: unique_ptrを<T> &&
template<class T, int Capacity>
class CircularStack
{
private:
std::array<std::unique_ptr<T>, Capacity> _stack;
public:
void Push(std::unique_ptr<T>&& value)
{
//some code omitted that updates an _index member variable
_stack[_index] = std::move(value);
}
}
私の質問は:
私は
Push
内std::move
またはstd::forward
を使用する必要がありますか?
私はstd::unique_ptr<T>&&
が普遍的参照としての資格ので、forward
ではなくmove
を使用する必要があるかどうかを確認していません。
私はC++を合理的に新しくしています。
管理言語から来ている場合は、「参照先」アプローチを真似しないようにしてください。 C++では、オブジェクトの配列はオブジェクトの配列でなければならず、 'new'で動的に生成される配列の配列ではありません。心に留めておきます。 –
重複:http://stackoverflow.com/q/9671749、http://stackoverflow.com/q/7257144。 –
チップをお寄せいただきありがとうございます。 'T'を継承する型のインスタンスが' Push'で与えられれば、 'std :: unique_ptr'はOKでしょうか? –
keith