如果我可以在创建新对象时为构造函数参数提供一个参数包,并且我不提供任何构造函数参数,那么结果将是:new T(); 如果它没有用户提供的构造函数,它将对对象进行值初始化。我该如何阻止这种情况发生?
template <typename T>
struct Foo
{
template <typename ... ConstructorArgs>
static void create(ConstructorArgs ... constructorArgs)
{
T* ptr = new T(constructorArgs ...);
T* ptr2 = new T;
std::cout << *ptr; // It seems it value-initialized (zero-initialized) it
std::cout << *ptr2; // Default initialized it
}
};
int main()
{
Foo<int>::create();
}