C ++ 98/03 std :: is_constructible Implementierung

Die Basiskomponenten meiner Hobbybibliothek müssen mit C ++ 98- und C ++ 11-Compilern funktionieren. Um zu lernen und Spaß zu haben, habe ich die C ++ 98-Implementierungen mit verschiedenen Unterstützungsfunktionen erstellt (wie z. B.enable_if, conditional, is_same, is_integral etc. ...), um sie zu verwenden, wenn keine C ++ 11-Unterstützung vorhanden ist.

Allerdings, während ich @ implementieris_constructible Ich steckte fest. Gibt es irgendeine Art von Template-Magie (irgendeine Art von SFINAE), mit der ich sie ohne C ++ 11-Unterstützung implementieren kann declval)?

Natürlich gibt es in C ++ 03 keine Unterstützung für unterschiedliche Vorlagen, daher werde ich die Implementierung bis zu einer gewissen Tiefe spezialisieren. Die Hauptfrage ist, ob es eine Technik gibt, die entscheiden kann, ob T aus den gegebenen Typen konstruierbar ist oder nicht.