Лучший стиль для удаления всех конструкторов (или другой функции)?
Позволять'скажем, я хочу сделать тип, который не может быть построен (нене спрашиваю почему).
struct Impossible
{
Я мог бы сделать это так:
Impossible() = delete;
// disable automatically generated constructors, don't declare any others
Impossible(const Impossible&) = delete;
// I suppose this is redundant with nothing to copy
или вот так:
Impossible(...) = delete;
// explicitly disable all constructors
или вот так:
template
Impossible(Ts...) = delete;
// explicitly disable all constructors, template version
};
Я думаю, я мог бы спросить то же самое о любой функции, а не только о конструкторах.
Имеет ли какое-то значение, какой я выберу? С точки зрения синтаксиса я думаю, что мне нравится второй вариант. Но есть ли какая-либо ситуация, где бы она ни находилась?Можно ли обнаружить разницу (кроме как в тексте сообщения об ошибке)?