Poniższy kod C++ 11 kompiluje powodzeniem na moim GCC 4.8:C++ 11 prywatny konstruktor domyślny
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
Jednak dodaje daje błąd kompilacji:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Dlaczego pierwszy jeden sukces? Czy prywatny konstruktor domyślnie nie powinien blokować tworzenia obiektu przez NonStack a;
?
Twój kod naprawdę robi [kompilacja] (http://coliru.stacked-crooked.com/a/55199811d96f1af7) na gcc4.8, ale 4.9 odrzuca go (tak jak powinien). – Praetorian
To pytanie byłoby lepsze, gdyby było w nim pytanie. –
Możesz także '= usunąć;' konstruktora. Powinien zachowywać się zgodnie z oczekiwaniami. – glampert