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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Returning a limited object as a class-wide value Date: Wed, 29 Nov 2017 10:00:18 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: MyFhHs417jM9AgzRpXn7yg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 X-Notice: Filtered by postfilter v. 0.8.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:49240 Date: 2017-11-29T10:00:18+01:00 List-Id: On 29/11/2017 03:05, Victor Porton wrote: > Let T be a limited tagged type. > > I want to define a function F which returns T'Class. > > Please show me an example. > > I try: > > return X: T'Class := T'(others => <>) do > --- ... > end return; > > Right way? Never return limited objects, never use limited aggregates. Both are bogus concepts. Even if compiler perchance compiled your code, your design will not work in case you wanted private extensible limited type with kind of "constructor" called from the derived type's "constructor". I tried that, it does not work. The worst thing is that you discover the dead end pretty much too late in some distant client packages and have to return all way back. Just don't. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de