Implementação C ++ 98/03 std :: is_constructible

Os componentes básicos da minha biblioteca de hobby precisam trabalhar com os compiladores C ++ 98 e C ++ 11. Para aprender e me divertir, criei as implementações C ++ 98 de vários tipos de funcionalidade de suporte (comoenable_if, conditional, is_same, is_integral etc.) para usá-los quando não houver suporte ao C ++ 11.

No entanto, enquanto eu estava implementandois_constructible Eu fiquei preso. Existe algum tipo de modelo mágico (algum tipo de SFINAE) com o qual eu possa implementá-lo sem o suporte ao C ++ 11 (declval)?

Obviamente, não há suporte a modelos variados no C ++ 03, portanto, especializarei a implementação até alguma profundidade. A questão principal é se existe uma técnica que pode decidir se T é construtível a partir dos tipos fornecidos ou não.

questionAnswers(2)

yourAnswerToTheQuestion