From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, FROM_STARTS_WITH_NUMS,WEIRD_PORT autolearn=no autolearn_force=no version=3.4.4 X-Received: by 10.107.52.66 with SMTP id b63mr2869054ioa.66.1522587511673; Sun, 01 Apr 2018 05:58:31 -0700 (PDT) X-Received: by 2002:a9d:1f58:: with SMTP id x24-v6mr316491otx.9.1522587511515; Sun, 01 Apr 2018 05:58:31 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!k65-v6no1216421ita.0!news-out.google.com!u64-v6ni3937itb.0!nntp.google.com!k65-v6no1216415ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Sun, 1 Apr 2018 05:58:31 -0700 (PDT) In-Reply-To: <87tvsvuva2.fsf@jacob-sparre.dk> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=85.243.127.156; posting-account=rhqvKAoAAABpikMmPHJSZh4400BboHwT NNTP-Posting-Host: 85.243.127.156 References: <6b8fb3ef-700f-4930-9a1e-5126d9482a26@googlegroups.com> <3d0554a2-95e8-4f8f-9fdf-1743d3f1dc18@googlegroups.com> <87tvsvuva2.fsf@jacob-sparre.dk> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <05a4db1c-9a7b-4475-841b-4a74f194cf27@googlegroups.com> Subject: Re: limited agregate and limited components default initialization From: Jean-Claude Rostaing <00120260a@gmail.com> Injection-Date: Sun, 01 Apr 2018 12:58:31 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Received-Bytes: 2761 X-Received-Body-CRC: 3303905237 Xref: reader02.eternal-september.org comp.lang.ada:51276 Date: 2018-04-01T05:58:31-07:00 List-Id: =C2=A0 =C2=A0 generic=20 =C2=A0 =C2=A0 =C2=A0 =C2=A0 type Item_Type(<>);=20 =C2=A0 =C2=A0 package Pointers is=20 =C2=A0 =C2=A0 =C2=A0 =C2=A0 type Smart_Pointers is limited null record;=20 =C2=A0 =C2=A0 end Pointers;=20 It would be logical, but it is impractical, because of (Value: in Item_type) return Smart_Pointers is (Smart_Pointers'(Controlled with Node =3D> new Accessor_type'(Data =3D= > new Item_type'(Value), Count =3D> 1))); =C2=AB=C2=A0initialization not allowed for a limited type=C2=A0=C2=BB becom= es=C2=A0: pointers2.adb:18:18: invalid use of formal incomplete type pointers2.adb:19:87: premature usage of incomplete type "Item_type" defined= at pointers2.ads:4 To Jacob=C2=A0:=20 =C2=A0 =C2=A0type Item_Type (<>) is private;=20 =C2=A0 =C2=A0type Item_Record (<>) is private; Sure=C2=A0! It=E2=80=99s already done for Item_type (see the generic parame= ter ;-) ) and Item_Record is declared in the private part, so =C2=AB=C2=A0u= nknown discriminant is not allowed=C2=A0=C2=BB. Such a shame, it would be u= seful to tell the compiler that you=E2=80=99re not declare initialized stuf= f even in the body, even though you know the discriminants.