Включена ли директива using в объявлении структуры / класса? [дубликат]

На этот вопрос уже есть ответ здесь:

Я обнаружил, что мои файлы заголовков C ++ довольно трудно читать (и очень утомительно набирать) со всеми полностью определенными типами (который доходит до 4 вложенных пространств имен). Это вопрос (все ответы дают беспорядочные альтернативы его реализации, но это , а не вопрос): Есть ли веская причина против введения директивы using с областью видимости в структуры и классы на языке C ++? (в то время как допустимо иметь область действия объявления-использования в функциях)?

например

class Foo : public Bar
{
    using namespace System;
    using namespace System::Network;
    using namespace System::Network::Win32::Sockets;
    using Bar::MemberFunc; // no conflict with this

    // e.g. of how messy my header files are without scoped using-directive
    void FooBar(System::Network::Win32::Sockets::Handle handle, System::Network::Win32::Sockets::Error& error /*, more fully-qualified param declarations... */);
};

Поскольку пространство имен является ключевым словом, я бы подумал, что оно достаточно отчетливо, чтобы не вызывать конфликта с область видимости с использованием объявления, такого как Bar :: MemberFunc .

РЕДАКТИРОВАТЬ: внимательно прочтите вопрос ---> I ' он выделил его жирным шрифтом. Напоминание: мы не обсуждаем, как улучшить читаемость этого примера. Предложение о том, как можно реализовать директиву using с ограниченным объемом (например, путем добавления ключевых слов / конструкций и т. Д.) На языке C ++, является НЕ ответом (если бы вы могли найти элегантный способ реализовать это с помощью существующего языка C ++ стандартов, тогда это, конечно, будет ответ)!

24
задан taskinoor 7 May 2017 в 09:45
поделиться