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.