2013-08-31 3 views
3

Я просматривал некоторые должности здесь на Stackoverflow, и я заметил, что большинство людей используют std::, но некоторые люди используют ::std::На пространстве имен «имена»: :: станд :: против станда ::

Я думаю, что я есть кой-что о глобальном масштабе или что-то подобное, что в пространствах имен чтения в качестве причины для использования ::std:: (но я не могу найти его сейчас, потому что это было в комментарии к несвязанному вопросу)

есть ли какая-либо причина предпочесть один путь против другого?

ответ

5

Это плохая идея, чтобы написать код, как это, но вы могли:

namespace foo { 
    namespace std { 
     int bar; 
    } 
    std::string s; 
} 

В этом случае std::string относится к ::foo::std пространства имен, а не ::std пространства имен. Таким образом, использование ::std::string просто немного более однозначно осторожно.

+1

Итак, для общих целей, std :: будет использоваться, верно? –

+2

Обычно да, я бы использовал 'std ::', а не ':: std ::'. –