Конструктор по умолчанию генерируется, только если вы не объявляете никаких конструкторов.Предполагается, что если вы определяете свой собственный конструктор, то вы также можете решить, хотите ли вы конструктор без аргументов, и если это так, определите это тоже.
В C ++ 0x будетявный синтаксис для указания, что вы хотите использовать конструктор по умолчанию:
struct Foo {
Foo() = default;
... other constructors ...
};