假设我有一个函数模板,并且想要声明一个值初始化的对象:
template<typename T>
void foo() {
// declare and default-initialize 'x' of type 'T'
}
我可以这样做吗?
T x;
对原始类型失败,因为它使它们未初始化,T x();
由于最令人烦恼的解析而失败T x = T();
需要复制构造函数,并且不需要编译器以及副本T x{};
失败,因为我们没有使用C ++ 11。我希望自己是个白痴,忽略了一些明显的东西,但我没有看到答案。