
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