Продолжаем изучать пространство имен, и сейчас нас ждет довольно сложное видео. Но во всяком случае мы сняли уже так много дублей, что у меня аж выросла борода. Но я надеюсь, вы все равно справитесь с этим материалом. Итак, давайте рассмотрим юнит-тест TestDocument из заготовки решения задачи библиотека работает с ini-файлами, которую вы должны были решить перед этим видео. В этом тесте мы объявляем переменную section, которая имеет тип указатель на Ini::Section. При этом ниже, ближе к концу теста, у нас еще объявлены три константы, которые также имеют тип Ini::Section, то есть вот это имя Ini::Section мы в нашем тесте используем 4 раза, При этом понятно, что вообще говоря, это юнит-тест на библиотеку работы с ini-файлами, то есть понятно, что он будет обращаться к содержимому пространству имён ini, а не к какому-то другому пространству имен, и поэтому, вообще говоря, использование полного имени Section может быть излишним, оно может затруднять написание кода и сейчас у нас, конечно, короткое имя у пространства имен, а если оно длинное, то код и читать может быть довольно сложно. Я вам честно признаюсь, что когда я готовил заготовку к этой задаче, я разочек написал просто Section, забыв указать имя пространства имен. Ну, естественно, у меня не скомпилировалось. Так вот, в С++ есть возможность не указывать полное имя объекта из пространства имён с помощью так называемой using-декларации, то есть, мы можем написать using Ini::Section, и дальше по коду мы можем не использовать префикс Ini:: при обращении к имени Section. Вот мы удалили его, давайте запустим компиляцию и видим, что наша программа компилируется, все хорошо. То есть, что мы сделали? Мы вот этой вот командой using Ini::Section сказали, компилятору, когда ты видишь имя Section, это значит, что мы имеем в виду вот это полное имя: Ini::Section, но надо отметить, что декларация распространяется естественно только на то имя, которое в ней указано. То есть, например, мы не можем здесь написать просто Document, компилятор нас не поймет. Вот наша программа не компилируется. Для Document мы все также должны указывать полное имя. Ну и второй важный момент состоит в том, что using-декларация действует только внутри того блока кода, в котором она находится, то есть вот сейчас using-декларация находится внутри тела нашей функции, внутри вот этих фигурных скобок, которые задают тело функции. Если же мы ее обернем в фигурные скобки и запустим компиляцию нашей программы, то она не скомпилируется и компилятор нам напишет "Section does not name a type". Теперь он не понимает, что такое Section. Если же мы уберем фигурные скобки, то наша программа снова будет компилироваться. Давайте подведем итоги. В этом видео мы поговорили о том, что частое использование полного имени из пространства имен может затруднять написание кода и иногда его загромождать, затруднять чтение, и в таких ситуациях можно применять using-декларацию, которая позволяет не указывать пространство имен перед именем объекта. Ну и в конце видео мы поговорили о важной особенности using-декларации, которая заключается в том, что using-декларация действует только внутри того блока кода, в котором она объявлена.