Boost logo

Boost :

Subject: Re: [boost] Formal review request: static size matrix/vector linear algebra library (Boost) LA
From: Simonson, Lucanus J (lucanus.j.simonson_at_[hidden])
Date: 2010-02-05 13:04:53


Jeffrey Bosboom wrote:
> DE wrote:
>> looking at traits class specialization i have a question:
>> is there a reason defining integral constants as following?
>>
>> static cont int dim = 42;
>>
>> i mean if you do not take address of that member a better solution
>> (imho) is to define an anonymous enum like
>>
>> enum {
>> dim = 42
>> };
>>
>> or in one line
>>
>> enum { dim = 42 };
>>
>> rather than defining a global object
>>
>
> An optimizing compiler will perform constant propagation, substituting
> the value of the variable (in this case, 42) everywhere it is used.
> If
> the address of the variable is never taken, the compiler need not
> actually have a memory location to hold it.

I've had bad experience with optimizing compilers failing to perform constant propagation for static const int the way I expected and prefer enum to avoid such problems. I avoid all static declarations when possible.

Regards,
Luke


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk