Вы не заполняете глобальное пространство имен всем содержимым namespace boost::asio::ip
.
Вы используете только то, что вам нужно. Возьмите следующий пример:
namespace A
{
void foo() {}
void goo() {}
}
namespace B
{
void foo() {}
void goo() {}
}
Если бы вы сделали
using namespace A;
using namespace B;
Вы получите двусмысленность при попытке вызвать методы.
Но вы можете сказать что-то вроде:
using A::foo;
using B::goo;
и двусмысленность исчезнет.
Конечно, самый безопасный способ сделать это - вообще не использовать using
и полностью квалифицировать имена при каждом использовании.