Это не разрешено в стандарте C ++ 03.
Если объекты с определенными пользователем конструкторами по умолчанию были разрешены в объединении, компилятор не мог решить, какой конструктор использовать, потому что все ссылаются на одну и ту же область памяти. Таким образом, объекты с определенными пользователем конструкторами не допускаются в объединениях.
Компилятор будет игнорировать тот факт, что ваш конструктор ничего не делает, потому что он может быть определен не в объединении, а в другом месте.
Вы можете сойти с C ++ 0x constructor() = default;