我正在尝试提出一个允许通过可变参数模板参数创建多种类型的类,但在编译过程中出现错误:
#include <list>
#include <memory>
struct IBaseType
{
};
class Type1 : public IBaseType
{
};
class Type2 : public IBaseType
{
};
template <typename... T>
class CreateTypes
{
public:
CreateTypes()
{
[](...){ }((m_types.push_back(std::unique_ptr<T>(new T())))...);
}
private:
std::list<std::unique_ptr<IBaseType>> m_types;
};
int main()
{
CreateTypes<Type1, Type2> createTypes;
return 0;
}
prog.cpp:在 'CreateTypes::CreateTypes() [with T = {Type1, Type2}]'的实例化中:
prog.cpp:31:28: 需要从这里
prog.cpp:22:9: 错误:无效使用空虚的表达
解决方案是什么?或者我可以采取其他方法吗?