SFINAE para hacer que la plantilla base siempre resulte en un error

Entonces estoy diseñando una especie demy_numeric_cast función para limitar los tipos de conversiones disponibles al usar un marco que estoy escribiendo.

Fue bastante sencillo hacer algo como

template<typename To, typename From>
constexpr To my_numeric_cast(From);

template<>
constexpr float my_numeric_cast<float, int>(int i) { return i; }

Lo que funciona, permitiendo solo lanzar desde ints a flotadores cada vez que se usa el yeso. Y producir un error de vinculación siempre que se intente un reparto que no esté en la lista blanca.

Sin embargo, realmente me gustaría hacer de esto un error de compilación, para detectar el mal uso mucho más rápido.
¿Cómo hago que el cuerpo de la plantilla base sea válido, espere al instanciarlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta