template<typename...Args>
class something {
//...
};
class storage {
template<typename...Args>
void build_something_class_obj() {
//...
}
private:
std::vector<???> m_container;
};
如何存储这样的类? Args可能有所不同,所以我无法创建存储模板类
答案 0 :(得分:1)
something
是不是类型的模板,但是vector
中只能有一种类型的对象。除非您使用基类,否则something
的不同实例化是完全不相关的:
struct something_base {};
template<typename...Args>
class something : something_base {
//...
};
现在您可以拥有一个std::vector<std::unique_ptr<something_base>>
并将something
的不同实例的实例推送到该向量中。
还有其他类型擦除的方法(例如std::any
,std::variant
)。最合适的方法取决于您要对向量中的元素执行什么操作。