¿El mejor estilo para eliminar todos los constructores (u otra función)?

Digamos que quiero hacer un tipo que no se pueda construir (no preguntes por qué).

struct Impossible
{

Yo podría hacerlo así:

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

o así:

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

o así:

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

Supongo que podría preguntar lo mismo acerca de cualquier función, no solo de los constructores.

¿Hace alguna diferencia cuál elijo? En términos de sintaxis creo que me gusta la segunda opción. Pero, ¿hay alguna situación, en cualquier caso, donde sea posible detectar una diferencia (aparte del texto de un mensaje de error)?

Respuestas a la pregunta(3)

Su respuesta a la pregunta