私はこのように動作するコードを持っている:可変個引数テンプレート展開、相続、とstd :: unique_ptrを
#include <memory>
#include <vector>
using namespace std;
struct A {
virtual ~A() = default;
};
struct B : public A {
};
template<typename... Ts> struct C {
C() : v_({new Ts...}) {}
...
std::vector<A*> v_;
};
...
C<B, B, A> bba;
私は明示的にnew
を呼び出し、それを削除するv_
を反復を避けるためにstd::unique_ptr
とstd::make_unique
を使用したいですデストラクタ(v_
は)になりますが、std::make_unique
と初期化リストと可変長の拡張を結びつける方法はわかりません(私はstd::unique_ptr
が移動専用であると思われます)。助言がありますか?
これはなぜ変わったのですか?しかし、 'std :: vector>と' std :: tuple >コレクションがコンテンツ署名を変更すると予想される場合、コンストラクタはクラスではなくテンプレートである必要があります。 –
TBBle