9

最近、レビューしていたコードで次の関数定義を見つけました。

void func( const::std::string& str )
{
    // Do something...
}

が合法であるように見えることに驚いていconst::std::stringます (GCC4.4、GCC 4.8、Clang 3.2、および Intel 13.0.1 でコンパイルされます)。

constとして使用できることを標準で指定していますnamespaceか?

4

3 に答える 3

4

構文が次のように評価されるため、これはコンパイルされます。

void func( const ::std::string& str )

これはstd、グローバル スコープで宣言されていることを意味します。このコンテキストでは、余分な::stdに言及するのは冗長です。

于 2013-04-03T08:18:08.133 に答える