我最近在我正在查看的一些代码中发现了以下函数定义:
void func( const::std::string& str )
{
// Do something...
}令我惊讶的是,const::std::string看起来是合法的(它是用GCC4.4、GCC 4.8、Clang3.2和英特尔13.0.1编译的)。
该标准是否指定可以将const用作namespace
发布于 2013-04-03 16:17:55
标准是否指定const可以用作命名空间?
不,它不是,因为它不可能。
您的代码与以下代码相同:
void func( const ::std::string& str );第一个作用域解析操作符表示全局名称空间。
发布于 2013-04-03 16:17:53
它被解析为
const ::std::string& str其中,::std::string是引用std::string的有效方式。
发布于 2013-04-03 16:18:08
这是因为语法的计算结果如下:
void func( const ::std::string& str )这意味着std是在全局范围内声明的。在这种情况下,在std之前添加额外的::是多余的。
https://stackoverflow.com/questions/15782143
复制相似问题