|
Boost : |
From: Daniel Frey (daniel.frey_at_[hidden])
Date: 2004-05-27 10:14:21
Jonathan Wakely wrote:
>>To my best knowledge even with the inclass line
>>static const int value = true ;
>>you have to give a definition outside of the class:
>>int A::value;
>
> Only if A::value is "used in the program". Stroustrup says if you use it in
> a way that requires the object to be stored in memory, e.g take its address
>
> AFAICT you don't need to give an out-of-class definition if the value is only
> used in integral constant expressions. Is that right?
Not quite. In practice, you are right, but the standard requires
*exactly* one definition for all static data members. See 9.4.2/5. So,
while Franz is right in theory, you are right in practice. :)
And FWIW it's IMHO irrelevant here anyway as we are trying to create a
workaround for a compiler bug. The generic (and presumably correct) code
is not touched, we just add a #ifdef'ed something which simply works -
whether or not it's standard conformant. And I think we've already seen
worse bugs and workarounds already :-D
Regards, Daniel
-- Daniel Frey aixigo AG - financial solutions & technology Schloß-Rahe-Straße 15, 52072 Aachen, Germany fon: +49 (0)241 936737-42, fax: +49 (0)241 936737-99 eMail: daniel.frey_at_[hidden], web: http://www.aixigo.de
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk