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.