Il codice C++ 11 seguente compila con successo sul mio GCC 4.8:C++ 11 costruttore di default privato
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
Tuttavia la seguente dà un errore di compilazione:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Perché la prima uno ha successo? Il costruttore privato predefinito non dovrebbe proibire la creazione di un oggetto tramite NonStack a;
?
Il tuo codice fa davvero [compile] (http://coliru.stacked-crooked.com/a/55199811d96f1af7) su gcc4.8, ma 4.9 lo rifiuta (come dovrebbe). – Praetorian
Questa domanda sarebbe meglio se ci fosse una domanda in esso. –
Puoi anche '= eliminare;' il costruttore. Dovrebbe comportarsi come previsto. – glampert