Директива using (C++)
Директива using позволяет использовать имена из пространства-имен без явного указания квалификатора имя-пространства-имен. Разумеется, для повышения удобочитаемости можно по-прежнему использовать полные квалифицированные имена.
using namespace [::] [ nested-name-specifier ] namespace-name
Заметки
Обратите внимание на различие между директивой using и декларацией using: объявление using позволяет использовать отдельное имя без квалификатора, а директива using позволяет использовать таким образом все имена из пространства имен. Это ключевое слово также используется для псевдонимов типа.
Если локальная переменная имеет такое же имя, как и переменная пространства имен, то переменная пространства имен будет скрытой. Создавать переменную пространства имен с те же именем, что и у глобальной переменной, является ошибкой.
Примечание
Для того чтобы снизить вероятность непредвиденного поведения IntelliSense, директиву using рекомендуется ставить в начале файла исходного кода.
Пространство имен std
В стандарте C++ ANSI/ISO установлено требование о том, чтобы пространство имен было явным образом определено в стандартной библиотеке. Например, при использовании библиотеки iostream необходимо указать пространство имен cout одним из следующих способов:
std::cout (explicitly)
using std::cout (объявление using)
using namespace std (директива using)
/clr
В следующем примере показано, как указать, что пространство имен в библиотеке базового класса .NET Framework пространство-имен может использоваться без явного указания квалификатора имя-пространства-имен.
// using_directive.cpp
// compile with: /c /clr
using namespace System::Reflection;
[assembly:AssemblyDescriptionAttribute("test")];
Пример
// using_directive2.cpp
// compile with: /EHsc
#include <iostream>
int main() {
std::cout << "Hello ";
using namespace std;
cout << "World." << endl;
}