我注意到无论是使用::size_t
还是std::size_t
,我的C ++程序都能正常编译。我可以互换地使用它们而没有任何问题,所以看起来其中一个是另一个typedef
。
作为示例,请考虑以下使用全局size_t
的代码(这是整个文件,没有using
和其他内容):
#include <iostream>
int main() {
::size_t x = 100;
std::cout << x << std::endl;
}
下一个代码使用size_t
中的std
:
#include <iostream>
int main() {
std::size_t x = 100;
std::cout << x << std::endl;
}
编译正常并按预期输出100
。
我的印象是标准库中的所有内容都放在命名空间std
中,但显然情况并非如此。为什么会这样?
注意:同样适用于ptrdiff_t
,intN_t
和uintN_t
。