>From: "Gennaro Prota" <[EMAIL PROTECTED]> > On Wed, 8 Jan 2003 01:23:05 +0100, Terje Slettebų > <[EMAIL PROTECTED]> wrote: > > >>From: "Gennaro Prota" <[EMAIL PROTECTED]> > > >> It *may* need out-of-class definition, as you say. > > > >Actually, it's pretty clear that in this case, the out-of-class definition > >is required. > > Indeed. > > > Intel C++ 7.0, running in strict mode, certainly needs it. It > >gives a link-error without it, for the program I gave. GCC 3.2 gives a > >link-error, as well. > > > >> This could also be a boost FAQ ;-) > >> http://lists.boost.org/MailArchives/boost/msg35797.php > > > >I am well aware of the DR that allows static const in-class initialisation > >to omit having an external definition (I read that DR item, earlier _today_, > >:) as I was browsing through the list), and I've also read that posting, > >earlier, so this was nothing new to me. Don't you think I know this? :) > > Sure you do. It's just that being a little tired (it's 2.00 AM here) I > didn't read your whole post. Of course this means that I shouldn't > have replied, but my intent was to be useful, by pointing out the DR. > Sorry.
No problem. :) I hope you didn't mind my posting, either. I kind of just replied the same way. :) > BTW I've seen that compilers tend to not follow the new wording > of 3.2 literally. For instance with most compilers I guess this > compiles fine thanks to the conversion to rvalue made by static_cast > > struct Test > { > static const int value=1 ; > }; > > //const int Test::value; > > void f(const int &) > { > } > > int main() > { > f( static_cast<int> (Test::value) ); > } > > > despite the fact that the expression Test::value is, as far as I > understand the standard, potentially evaluated. I think this is more a > problem in the standard than in the compilers though, because this > behavior appears natural to me. Intel C++ accepts it, at least, and gives the following remark: remark #383: value copied to temporary, reference to temporary used f( static_cast<int> (Test::value) ); ^ Yeah. It's not easy to see if making a copy constitutes "use" (which also happens in pass by value, of course). It seems compilers typically don't consider it "use". Regards, Terje _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost