读书人

std:一:cout和std:cout有啥区别

发布时间: 2013-01-11 11:57:35 作者: rapoo

std::__1::cout和std::cout有啥区别?
我用的是Xcode,一打stl就自动出来std::__1::cout了,如题,这俩有时候区别呢?
[解决办法]
带有__或_起始后接大写字母的标识符保留给实现。如果你不是在实现/hack编译器/标准库大可不必理会。
LZ用的是libcxx还是啥?可能和libstdc++一样是用inline namespace用__1当版本号。
[解决办法]
看了下libcxx的源码,果然:
<iostream>里有_LIBCPP_BEGIN_NAMESPACE_STD。
在<config>里有

// Inline namespaces are available in Clang regardless of C++ dialect.
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace

inline namespace是C++11的特性,其中的名称可以直接当成外部命名空间的名称来用。
不过Clang即便在C++98/03里也支持inline namespace。这里是system header就直接用扩展了。

读书人网 >C++

热点推荐