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=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,e3c7ee8cd1d3f414 X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Re: rep clause in generics Date: 1997/03/20 Message-ID: <01bc3583$690a4580$2df282c1@xhv46.dial.pipex.com>#1/1 X-Deja-AN: 227158352 References: <01bc3057$61a78db0$81946482@vkpc131> Organization: UUNet PIPEX server (post doesn't reflect views of UUNet PIPEX) Newsgroups: comp.lang.ada Date: 1997-03-20T00:00:00+00:00 List-Id: Robert Dewar wrote in article ... > The compiler is correct, this is obviously NOT a static expression. Remember > a static expression is not an expression which seems to you to be something > that the compiler should be able to evaluate at compile time. There are very > specific rules, and this does not obey them. > > So when you say to yourself "I thought that ... was a static expression", > you need to go to the set of rules, and see if they conform to your thought! > In this case they don't, you cannot find a rule that says that this > expression is static. An expression is non-static unless there is a very > specific rule in the RM that says that it is static. A word of explanation... The attributes of a type which is a formal generic parameter are not defined in the standard as being static, and in some compilers may vary during run-time, because of the different ways in which different compilers may implement generics. Whilst most compilers will generate new executable code for each generic instantiation (thus making the generic parameters within each instance effectively static), some compilers will not (simply generating one piece of 'generic' code which is passed generic parameters as if they were subprogram parameters). Some compilers offer a choice. If the standard defined formal generic parameters as being static, the second option would be impossible. Hope this helps.