Следующий C++ 11 код успешно компилируется на моей GCC 4.8:C++ 11 частный конструктор по умолчанию
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
Однако следующее дает ошибку компиляции:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Почему первый один успех? Должен ли частный дефолтный конструктор запретить создание объекта через NonStack a;
?
Ваш код действительно выполняет [компиляцию] (http://coliru.stacked-crooked.com/a/55199811d96f1af7) на gcc4.8, но 4.9 отклоняет его (как следует). – Praetorian
Этот вопрос был бы лучше, если бы в нем возник вопрос. –
Вы также можете '= удалить;' конструктор. Он должен вести себя так, как ожидалось. – glampert