------- Comment #3 from ludovic at ludovic-brenta dot org 2007-11-30 21:51 ------- 7.3(15) says that a private type has a partial view and a full view, and the properties of the partial view apply in some places, and the properties of the full view apply in other places. So in places where the full view applies, the type is considered tagged, and cannot have default expressions in the known_discriminant part.
You seem to imply that the full view does not apply in the completion of the type, as the full view does not even exist yet. Taking the RM literally, you may be right but the annotated AARM 3.7(11.b/2) provides guidance: Defaults for discriminants of tagged types are disallowed so that every object of a tagged type is constrained, either by an explicit constraint, or by its initial discriminant values. This substantially simplifies the semantic rules and the implementation of inherited dispatching operations. For generic formal types, the restriction simplifies the type matching rules. If one simply wants a "default" value for the discriminants, a constrained subtype can be declared for future use. I think this rule would be violated for objects of the type declared in the private part where the full view applies, i.e. you could declare unconstrained objects of the tagged type. So, I confirm this to be a bug. -- ludovic at ludovic-brenta dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15611