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.