struct Outer
{
struct Inner;
Inner inner; // incomplete type
};
struct Outer::Inner
{
};
template<typename T>
struct OuterTempl
{
struct InnerTempl;
InnerTempl inner; // OK
};
template<typename T>
struct OuterTempl<T>::InnerTempl
{
};
int main()
{
}
c3RydWN0IE91dGVyCnsKICAgIHN0cnVjdCBJbm5lcjsKICAgIElubmVyIGlubmVyOyAgIC8vIGluY29tcGxldGUgdHlwZQp9OwoKc3RydWN0IE91dGVyOjpJbm5lcgp7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgT3V0ZXJUZW1wbAp7CiAgICBzdHJ1Y3QgSW5uZXJUZW1wbDsKICAgIElubmVyVGVtcGwgaW5uZXI7IC8vIE9LCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgT3V0ZXJUZW1wbDxUPjo6SW5uZXJUZW1wbAp7Cn07CgppbnQgbWFpbigpCnsKfQoK