Не уверен, где спросить (не стесняйтесь закрывать это, если это неподходящий вопрос), но я ничего не нашел в этом в предложениях на С++ 17, а this или this упоминает об этом при работе с вложенным добавлением пространства имен в С++.
Так что в настоящее время это единственный вариант:
class A
{
public:
class B; //forward-declared INSIDE class/namespace
};
class A::B //defined outside
{
};
Будет ли это возможным в С++ 17?
class A::B; //forward declared NESTED outside of parent class/namespace
class C
{
A::B *b;
};
а затем либо это (1) (как представляется, предложение вложенных определений имен имен)
class A::B //definition of A::B without defining A
{
};
или это (2)
class A
{
public:
class A::B
{
};
};
или это [3]
class A
{
public:
class B;
};
class A::B
{
};
Я подозреваю, что определение A::B
без определения A
сначала может не работать (хотя предложение, похоже, позволяет это).