Se stai fornendo una libreria di sola intestazione , non hai altra scelta e non la prenderò in considerazione ulteriormente.
Se i metodi sono necessariamente vuoti, la definizione nell'intestazione di solito è soddisfacente (anche se può essere una confusione visiva, che può essere evitata definendo al di fuori della dichiarazione della classe).
Se l'implementazione potrebbe cambiare a causa di requisiti futuri, tieni presente che il codice compilato rispetto alla versione precedente richiederà la ricompilazione per ottenere la nuova implementazione. È improbabile che si verifichi un problema all'interno di un singolo albero di build, ma se stai fornendo una libreria condivisa, ti consigliamo di evitarlo, poiché può introdurre problemi difficili da diagnosticare.
Se i metodi sono compito di costruttore, distruttore o copia / spostamento, dichiarare esplicitamente = default
potrebbe essere ciò che vuoi invece. C'è una sostanziale differenza tra la definizione di qualsiasi metodo vuoto e la dichiarazione come predefinita.