我看到微软的stddef.h
定义是nullptr_t
这样的:
namespace std
{
typedef decltype(__nullptr) nullptr_t;
}
using ::std::nullptr_t;
该using
decleration内喷射nullptr_t
到全局命名空间。我在标准中找不到任何可以做到的事情。
我还看到GCC nullptr_t
中没有全局名称空间。
两种实现都可以被允许还是其中一种错误? 不好意思,GCC的行为与CL相同。
编辑:与相同cstddef
,下面的代码也可以用VC编译(也在线)。
#include <cstddef>
int main()
{
nullptr_t nil = nullptr;
}
它必须在全局名称空间中。
D.5 C标准库头文件[depr.c.headers]
2每个C头(每个头具有形式的名称)的
name.h
行为就像将由相应cname
头放置在标准库名称空间中的每个名称都放在全局名称空间范围内一样。[...]
对于C ++而言,这里的名称也不例外。如果C ++为<cstddef>
C所<stddef.h>
不提供的名称添加了名称,则C ++<stddef.h>
仍需要提供它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句