A(T)1struct A(T) 2 { 3 T t; // causes A to be SIZEOKfwd b/c B (passed as T) isn't yet done 4 5 // On the 2nd semantic pass through A, _scope of C got set again, 6 // even though the struct was already done. 7 struct C 8 { 9 } 10 } 11 12 struct B 13 { 14 A!B* a; // causes instantiation of A!B, but can finish semantic with A!B still being fwdref 15 } 16