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