Какова область действия псевдонима пространства имен в C++?

Имеет ли псевдоним пространства имен C++, определенный внутри определения функции, блок, функцию, файл или другую область действия (срок действия)?


person EmpireJones    schedule 30.09.2009    source источник
comment
Вы имеете в виду использование [пространства имен]; ?   -  person Nick Bedford    schedule 30.09.2009
comment
Похоже, он имеет в виду псевдоним более длинного имени пространства имен для более легко используемого идентификатора: msdn.microsoft.com/en-us/library/chwe1tc8.aspx   -  person Twisol    schedule 30.09.2009
comment
псевдоним пространства имен (и использование объявлений) имеют те же правила области действия, что и другие объявления в C++.   -  person Martin York    schedule 30.09.2009


Ответы (7)


Это срок действия блока. Например, если вы определяете псевдоним пространства имен, как показано ниже, псевдоним пространства имен abc будет недействительным вне блока {...}.


 {  
    namespace abc = xyz;
    abc::test t;  //valid 
 }
  abc::test t;  //invalid

person rjoshi    schedule 30.09.2009

Область действия — это декларативная область, в которой определен псевдоним.

person Reed Copsey    schedule 30.09.2009

Он будет иметь область действия блока, в котором он был определен, - вероятно, будет таким же, как область действия функции, если только вы не объявите псевдоним внутри блока внутри функции.

person Jonathan Leffler    schedule 30.09.2009

Я совершенно уверен, что псевдоним пространства имен имеет область действия только в пределах блока, в котором он создан, как и большинство других типов идентификаторов. В данный момент я не могу точно проверить, но эта страница вроде не против.

person Twisol    schedule 30.09.2009

Насколько я знаю, это в заявленной области. Итак, если вы используете псевдоним в методе, то он действителен в этом методе, но не в другом.

person John Cavan    schedule 30.09.2009

Взгляните на http://en.wikibooks.org/wiki/C++_Programming/Scope/Namespaces

person kv-prajapati    schedule 30.09.2009

Он действителен в течение срока действия, в котором он введен.

Взгляните на http://en.cppreference.com/w/cpp/language/namespace_alias, я доверяю объяснению cppreference, оно гораздо более стандартно.

person Huitse Tai    schedule 28.10.2013
comment
Пожалуйста, не указывайте только ссылку. Также добавьте хотя бы частичный отрывок из страницы, на которую вы ссылаетесь. - person Matthias; 28.10.2013