Wann / warum sollte ich meinen Konstruktor explizit löschen wollen? Angenommen, der Grund ist, seine Verwendung zu verhindern, warum nicht einfach machen private?
class Foo
{
public:
Foo() = delete;
};
delete. Sowohl die Frage als auch Luchians Antwort können leicht als konstruktiv eingestuft werden. Jeder, der die Feinheiten von C ++ 11 nicht einatmet, aber bald muss, wird etwas aus beiden herausholen.
= default, nicht einmal die Klasse kann es verwenden, und ich persönlich bevorzuge die Verwendung der gelöschten Funktion. over Function ist privat. Ersteres besagt ausdrücklich: "Dies ist nicht zur Verwendung gedacht." Wenn sich daraus etwas ergibt, macht die Klasse, die es nicht verwenden kann, tatsächlich einen semantischen Unterschied.