C ++ 98/03 std :: implementación is_constructible

Los componentes básicos de mi biblioteca de pasatiempos tienen que funcionar con los compiladores de C ++ 98 y C ++ 11. Para aprender y divertirme, creé las implementaciones de C ++ 98 de varias funcionalidades de soporte (comoenable_if, conditional, is_same, is_integral etc. ...) para usarlos cuando no hay soporte para C ++ 11.

Sin embargo, mientras estaba implementandois_constructible Me quedé atorado. ¿Hay algún tipo de plantilla mágica (algún tipo de SFINAE) con la que pueda implementarla sin compatibilidad con C ++ 11 (declval)?

Por supuesto, no hay soporte de plantillas variadas en C ++ 03, por lo que me especializaré en la implementación hasta cierto punto. La pregunta principal es si existe una técnica que pueda decidir si T es construible a partir de los tipos dados o no.

Respuestas a la pregunta(2)

Su respuesta a la pregunta