Nie jestem pewien, gdzie pytać (możesz to zamknąć, jeśli jest to niewłaściwe pytanie), ale nie znalazłem nic na ten temat specjalnie w C++ 17 propozycji, ani this ani this wspomina o tym przy zajmowaniu się zagnieżdżonym dodawaniem przestrzeni nazw. C++.Czy C++ 17 zezwoli na forwardowanie klas zagnieżdżonych?
więc obecnie jest to jedyna opcja:
class A
{
public:
class B; //forward-declared INSIDE class/namespace
};
class A::B //defined outside
{
};
Będzie to możliwe w C++ 17?
class A::B; //forward declared NESTED outside of parent class/namespace
class C
{
A::B *b;
};
i wówczas ta (1) (jak wydaje się wniosek definicji namepsace zagnieżdżonych)
class A::B //definition of A::B without defining A
{
};
lub niniejszego (2)
class A
{
public:
class A::B
{
};
};
lub w [3]
class A
{
public:
class B;
};
class A::B
{
};
Podejrzewam definicję f A::B
bez definicji A
pierwszy może nie działać (chociaż wydaje się, że wniosek na to pozwala).
* class * es znacznie różnią się od * przestrzeni nazw * s. Ale patrz [P0289] (http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0289r0.pdf). – cpplearner