Melhor estilo para excluir todos os construtores (ou outra função)?

Digamos que eu queira fazer um tipo que não possa ser construído (não pergunte por quê).

struct Impossible
{

Eu poderia fazer assim:

    Impossible() = delete;
    // disable automatically generated constructors, don't declare any others
    Impossible(const Impossible&) = delete;
    // I suppose this is redundant with nothing to copy

ou assim:

    Impossible(...) = delete;
    // explicitly disable all constructors

ou assim:

    template<typename... Ts>
    Impossible(Ts...) = delete;
    // explicitly disable all constructors, template version
};

Eu acho que eu poderia perguntar a mesma coisa sobre qualquer função, não apenas construtores.

Faz alguma diferença qual deles eu escolho? Em termos de sintaxe, acho que gosto da segunda opção. Mas existe alguma situação, seja qual for, onde é possível detectar uma diferença (diferente do texto de uma mensagem de erro)?

questionAnswers(3)

yourAnswerToTheQuestion