Nehmen wir zum Beispiel das Argument an, dass eine effizientere Implementierung (Speichern, Operationen darauf) für einen Vektor ganzzahliger Typen gefunden wird (im Vergleich zur generischen Vektorimplementierung). Kann eine standardkonforme Bibliothek so etwas wie:Kann eine Standardbibliotheksimplementierung Standardtypen spezialisieren?
template <class T, class A, class Enable = void>
class vector { ... };
template <class T>
class vector<T, A, std::enable_if_t<std::is_integral<T>::value>> { ... };
Ich denke, dass dies wegen der zusätzlichen Vorlage Parameter illegal wäre.
Aber was ist ein wenig Compiler Magie: (abgesehen von der zusätzlichen Umsetzungsarbeit) würde so etwas erlaubt sein:
vector<integral_type, A>
intern währendvector<anything_else, A>
-class vector_integral<T, A>
abgebildet zu sein zu sein intern zugeordnet zuclass vector<T, A>
.
- Das ist natürlich nicht über Spezialisierungen in der Norm ausdrücklich erwähnt, wie std::vector<bool>
- Die Spezialisierung offensichtlich die gleiche Schnittstelle und beobachtbares Verhalten würde.
- Lassen Sie uns concepts
ignorieren, da sie noch nicht Standard sind. Es sei denn, du hast ein paar Fakten.
- Dies ist eine reine akademische Frage (lesen persönliche Neugier).