<p>I have a structure which I create a custom constructor to initialize the members to 0's.  I've seen in older compilers that when in release mode, without doing a memset to 0, the values are not initialized.</p>

<p>I now want to use this structure in a union, but get errors because it has a non-trivial constructor.</p>

<p>So, question 1.  Does the default compiler implemented constructor guarantee that all members of a structure will be null initialized?  The non-trivial constructor just does a memset of all the members to '0' to ensure a clean structure.</p>

<p>Question 2:  If a constructor must be specified on the base structure, how can a union be implemented to contain that element and ensure a 0 initialized base element?</p>

Can you do something like this?
```
```
class Outer
{
public:
    Outer()
    {
        memset(&inner_, 0, sizeof(inner_));
    }
private:
    union Inner
    {
        int qty_;
        double price_;
    } inner_;
};
```
```
...or maybe something like this?
```
```
union MyUnion
{
    int qty_;
    double price_;
};

void someFunction()
{
    MyUnion u = {0};
}
```
```