Я обнаружил, что мои файлы заголовков на C++ довольно трудно читать (и очень утомительно набирать) со всеми полностью определенными типами (которые доходят до 4 вложенных пространств имен). Вот в чем вопрос (все ответы дают запутанные альтернативы его реализации, но вопрос не в этом): Есть ли веская причина против введения директивы использования с ограниченной областью действия в структурах и классах? на языке C++ (в то время как в функциях допустимо использование декларации использования)?
e.g.
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... */);
};
Поскольку namespace
является ключевым словом, я бы подумал, что оно достаточно отчетливо, чтобы не вызывать конфликта с объявлением использования с ограниченной областью действия, таким как Bar::MemberFunc
.
РЕДАКТИРОВАТЬ: внимательно прочитайте вопрос --- > я выделил его жирным шрифтом. Напоминание: мы не обсуждаем здесь, как улучшить читабельность примера. Предложение о том, как может быть реализована директива использования с ограниченной областью действия (т. е. посредством добавления ключевых слов/конструкций и т. д.) в языке C++, является НЕ ответом (если бы вы могли найти элегантный способ реализовать это, используя существующий C++ норм языка, то это конечно был бы ответ)!