Comment est “par défaut =” différent de “{}” pour défaut constructeur et le destructeur?

J'ai posté ce que une seule question sur les destructeurs, mais maintenant, je suis en ajoutant l'examen du constructeur par défaut. Voici la question d'origine:

Si je veux donner ma classe un destructeur qui est virtuel, mais est
sinon la même chose que ce que le compilateur de générer, je peux utiliser =default:

class Widget {
public:
   virtual ~Widget() = default;
};

Mais il semble que je peux obtenir le même effet avec moins de frappe à l'aide d'un
définition vide:

class Widget {
public:
   virtual ~Widget() {}
};

Est-il de toute façon dans laquelle de ces deux définitions se comporter différemment?

Sur la base des réponses posté pour cette question, la situation pour le constructeur par défaut semble similaire. Étant donné qu'il n'y a presque pas de différence de sens entre "=default" et "{}" pour les destructeurs, est-il de la même façon presque pas de différence de sens entre ces options pour les constructeurs par défaut? C'est, en supposant que je veux créer un type où les objets de ce type seront à la fois créés et détruits, pourquoi aurais-je envie de dire

Widget() = default;

au lieu de

Widget() {}

?

Je m'excuse si l'extension de cette question après son post d'origine est en train de violer certaines règles. L'affichage d'un quasi-identiques question pour les constructeurs par défaut qui m'a frappé aussi l'option moins souhaitable.

  • Pas que je sache, mais = default est la plus explicite de l'omi, et est compatible avec le support avec des constructeurs.
  • Je ne sais pas pour vous, mais je pense que l'ancien est conforme à la définition de "trivial destructeur", tandis que les seconds ne le sont pas. Donc std::has_trivial_destructor<Widget>::value est true pour la première, mais false pour la deuxième. Quelles sont les implications de ce fait, je ne sais pas non plus. 🙂
  • Un destructeur virtuel n'est jamais anodin.
  • Je suppose que l'ouverture de mes yeux et en regardant le code serait trop de travail! Merci pour la correction.