
On 8/1/2011 3:29 AM, Mathias Gaunard wrote:
It might be a good idea to make those PODs to avoid dynamic initialization.
They are empty, so are POD. The syntax used appears to force the compiler to use dynamic initialization anyway; in an optimized build I suppose it might be removed completely. But in debug build I noticed that it is allocated in the section with dynamically initialized objects, takes 1 byte (plus padding), and the constructor for the variable fills the padding with CC's and the single dummy byte with 0. It would indeed be nicer if the required dummy byte was initialized at compile time only, bringing the zero in with the program image, and didn't need to call a (empty) function to construct. Is there some reason why the author didn't use const forwarderXYZ<transform_holderXYZ> transformedXYZ; with default initialization? —John