Ich habe im Quellcode von LLVM (in AlignOf.h zum Beispiel) mit Standard-Ctors als 'gelöscht' deklariert. Die zugehörigen Klassenvorlagen befinden sich normalerweise in einem speziellen Namespace namens 'llvm :: detail'. Der ganze Zweck dort war meiner Meinung nach, dass sie diese Klasse nur als Hilfsklasse betrachteten. Sie hatten nie vor, sie zu instantiieren; nur, um sie im Kontext anderer Klassenvorlagen mit einigen Metaprogrammierungstricks zu verwenden, die in der Kompilierungszeit ausgeführt werden.
Eg. Es gibt diese AlignmentCalcImpl-Klassenvorlage, die nur innerhalb einer anderen Klassenvorlage namens AlignOf als Parameter für den Operator sizeof (.) verwendet wird. Dieser Ausdruck kann in der Kompilierzeit ausgewertet werden; und es gibt keine Notwendigkeit, die Vorlage zu instanziieren -> also warum nicht deklarieren die Standard-Ctor löschen, um diese Absicht auszudrücken.
Aber es ist nur meine Annahme.
Es geht irgendwie gut mit '= default', nicht einmal die Klasse kann es verwenden, und ich persönlich bevorzuge * Verwendung der gelöschten Funktion. * Over * Funktion ist privat. * Ersteres sagt ausdrücklich" Dies ist nicht gemeint benutzt werden." Wenn irgendetwas daraus hervorgeht, macht die Klasse, die es nicht benutzen kann, tatsächlich einen semantischen Unterschied. – chris
Ich glaube wirklich, dass die Leute anfangen, aggressiv zu werden mit den engen Stimmen. Ich sehe nicht, wie das nicht konstruktiv ist. –
@LuchianGrigore: Einverstanden. Ich habe mich gefragt, warum die Gemeinschaft so viel steifer geworden ist. Ich verstehe den Punkt nicht. –