Sono due cose completamente diverse: con le graffe stai dichiarando e definendo un costruttore vuoto, mentre senza le graffe stai solo dichiarando il costruttore, per cui il compilatore si aspetta che sia effettivamente definito da un'altra parte.
Sono due cose completamente diverse: con le graffe stai dichiarando e definendo un costruttore vuoto, mentre senza le graffe stai solo dichiarando il costruttore, per cui il compilatore si aspetta che sia effettivamente definito da un'altra parte.
Amaro C++, il gusto pieno dell'undefined behavior.