【发布时间】:2012-04-14 17:37:35
【问题描述】:
我无法从 C++11 标准中判断 nullptr_t 是否具有默认构造函数。换句话说,以下是否有效?:
nullptr_t n;
GCC 和 VC++ 允许使用上述代码,但 clang 不允许。我在标准中找不到任何指定它没有默认构造函数的东西,而我能找到的表明它应该有。这对我很重要,因为我正在编写 nullptr 的基本回退实现以支持旧编译器,并且需要知道是否需要为其提供默认构造函数。
【问题讨论】:
-
我认为您应该将
nullptr_t作为普通指针类型处理,即不作为类处理。所以我假设nullptr_t n;创建了一个 uninitialised 变量;你应该明确写nullptr_t n = nullptr;。但是我这里没有 C++11 编译器,所以无法检查。而且我似乎无法在正式规范中找到我在哪里阅读它...... -
FWIW,clang 接受“nullptr_t n;”在这里。