This might be a work-around for the problem, but I'm not happy with
the approach.
The basic problem is that the can_complete_without_circularity stuff
has made template classes different from ordinary classes; ordinary
classes never have data members with incomplete types. The reason
we needed can_complete_without_circularity was basically that we
were mishandling tyenames and/or an implicit-typename (now deprecated)
problem.
I'd like to see if we can unravel the basic problem; if we can do
that then we can get back to the situation where template classes
and normal classes are treated in the same way, which would be
better.
The problem is that the standard wasn't clear about how to do the