Der folgende C++ 11-Code erfolgreich auf meinem GCC kompiliert 4.8:C++ 11 private Standardkonstruktors
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
jedoch folgendes ein Übersetzungsfehler gibt:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Warum wird die erste einer gelingt? Sollte der private Standardkonstruktor die Erstellung eines Objekts über NonStack a;
nicht verbieten?
Ihr Code wirklich [kompilieren] (http://coliru.stacked-crooked.com/a/55199811d96f1af7) auf gcc4.8, aber 4.9 lehnt es ab (wie es sollte). – Praetorian
Diese Frage wäre besser, wenn da eine Frage wäre. –
Sie können auch '= löschen;' den Konstruktor. Es sollte sich wie erwartet verhalten. – glampert