"Blady" wrote in message news:t8ml0l$1vo2$1@gioia.aioe.org... > Hello, > > Following the example section of RM Ada 2022 § 4.3.5 Container Aggregate, > I want to try map aggregates: > > 453. type Map_Type is private > 454. with Aggregate => (Empty => Empty_Map, > 455. Add_Named => Add_To_Map); > 456. > 457. procedure Add_To_Map (M : in out Map_Type; Key : in Integer; > Value : in String); > 458. > 459. Empty_Map : constant Map_Type; > ... -- End of example code > 482. private > ... > 488. type Map_Type is array (1..10) of String (1..10); This type is illegal, by 4.3.5(10/5): If the container type of an Aggregate aspect is a private type, the full type of the container type shall not be an array type. The reason for this is obvious in your question: it is ambiguous if an aggregate is an array aggregate or a container aggregate wherever the full type is visible, and that is not worth making work (any choice would be a surprise in some contexts). Apparently, GNAT failed to check for this error (probably because there aren't ACATS tests yet for Ada 2022, so errors of omission are very hard to find, not having a vetted set of tests). Secondly, early post Ada 2022 AIs have removed the possibility of using a constant for Empty_Map, since it does nto work with inheritance (and container aggregates are supposed to work with inheritance). So while GNAT may allow you to define Empty_Map this way now, it won't for very long. It will need to be a function. Randy.