Подтвердить что ты не робот

Есть ли более короткий способ перенаправления объявления класса в пространстве имен?

Я могу переслать объявить функцию в пространстве имен, выполнив следующее:

void myNamespace::doThing();

что эквивалентно:

namespace myNamespace
{
  void doThing();
}

Чтобы переслать объявление класса в пространстве имен:

namespace myNamespace
{
  class myClass;
}

Есть ли более короткий способ сделать это? Я думал что-то вроде:

class myNamespace::myClass;
4b9b3361

Ответ 1

Нет, однако с небольшим переформатированием

namespace myNamespace { class myClass; }

не намного хуже, чем

class myNamespace::myClass;

Ответ 2

Я хотел сделать то же самое раньше - это не разрешено. Элемент пространства имен должен быть объявлен в namespace-body. Их можно только "упомянуть", используя оператор разрешения области.

См. 3.3.5 "Область пространства имен" в стандарте.

Сообщается, что объекты, объявленные в пространстве имен, являются членами пространства имен, а имена, введенные этими объявлениями в декларативную область пространства имен, называются именами членов пространства имен.

и

Член пространства имен также может ссылаться после того, как оператор разрешения области видимости (5.1) применяется к имени своего пространства имен или имени пространства имен, которое назначает пространство имен членов в директиве-указателе;

Ответ 3

Я так не думаю.