Лучший стиль для удаления всех конструкторов (или другой функции)?

Позволять'скажем, я хочу сделать тип, который не может быть построен (нене спрашиваю почему).

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
};

Я думаю, я мог бы спросить то же самое о любой функции, а не только о конструкторах.

Имеет ли какое-то значение, какой я выберу? С точки зрения синтаксиса я думаю, что мне нравится второй вариант. Но есть ли какая-либо ситуация, где бы она ни находилась?Можно ли обнаружить разницу (кроме как в тексте сообщения об ошибке)?