Inspiriert von dieser Frage frage ich mich, ob es eine Kompilierzeitprüfung gibt, die man einführen kann, um zu erkennen, ob zwei gegebene Template-Instanziierungen:
%Vor% werden aus der gleichen Definition erstellt oder wenn sie aus verschiedenen Spezialisierungen der Templ
Vorlage erstellt werden
Im Grunde wird sich die hypothetische Template-Funktion wie folgt verhalten:
%Vor%ist es möglich, diese Art von Metafunktion zu erstellen?
Es scheint unwahrscheinlich, um ehrlich zu sein (obwohl ich einen schlauen Trick nicht definitiv ausschließen kann).
Es gibt keine erstklassige Identität für eine bestimmte Spezialisierung (außerhalb der Typargumente, die sie auswählen), um sie zu vergleichen.
Wenn Sie möchten, können Sie also Ihre eigenen Templates verwenden, aber Sie können keine Ad-hoc-Inferenz für vorhandene Templates schreiben.
Bedenken Sie auch, dass es nicht funktionieren würde , in dem Sinne, dass es nicht erkennen kann, ob zwei Instanzen ein kompatibles Layout haben: selbst wenn Templ<int>
und Templ<char>
aus der Instanz instanziiert werden gleicher Template-Code, ohne Spezialisierung, kann der Code Traits-Klassen verwenden, auf die spezialisiert ist
Tags und Links c++ compile-time template-meta-programming template-specialization static-assert