
Anthony Williams wrote:
No. This is required. The memory for an object with static-storage-duration MUST be zero initialized prior to the constructor running.
1) "Might": the standard does not require it.
Wrong.
You are obviously misunderstanding me. Of course are static objects zero initialized. I had the impression that the original poster meant that this would be a general case for dynamic objects as well on some compilers. And this is waht I meant by "might". Did you get me now?
2) E.g.: MSVC initializes memory to "CDCDCDCDCDCD...." in debugging builds, so there is at least one prominent case where the assumption is false.
It does this for automatic and heap-allocated objects (which is allowed). If it did it for static objects, it would be non-conforming.
Same than before. But the problem is a different one: Even a static zero initialized ähm memory area, is not a object until its ctor has been run! And since my mutex proposal tries to implement a mutex that is valid before ctor runs have been completed, only POD's can be used. Does this make sense? Roland