为什么在全局范围以及命名空间std中定义了size_t?

时间:2017-05-31 04:03:20

标签: c++ namespaces std c++-standard-library size-t

我注意到无论是使用::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_tintN_tuintN_t

1 个答案:

答案 0 :(得分:-1)

根据我所理解的,::size_tstd::size_t略有不同,但基本相同,功能相似。

这里有一个更好的答案:link

希望这会有所帮助!