Constructor variad alternativo: ¿por qué funciona esto?

Al contestaresta pregunta sobre tratar de construir un constructor de referencia de reenvío variable que solo debería llamarse si ningún otro constructor es válido. Es decir, si hubiera un:

C(const char*, size_t) { }                     // 1
template <typename... T, ???> C(T&&... ) { }   // 2

Nos gustariaC c1{"abc", 2}; llamar (1), a pesar de la conversión requerida, peroC c2{1, 2, 3}; llamar a (2), ya que (1) no se puede aplicar.

Propuse la siguiente solución:

template <typename... T,
          typename = std::enable_if_t<!std::is_constructible<C, T&&...>::value>
           >
C(T&&... ) { }

Y por propuesta, quiero decir, lo probé y me sorprendió descubrir que realmente funciona. Recopila y hace exactamente lo que esperaba tanto en gcc como en clang. Sin embargo, no puedo explicarlopor qué funciona o incluso si es realmentesupuesto to work y gcc y clang son ambos particularmente complacientes. ¿Lo es? ¿Por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta