iX 9/2020
S. 128
Praxis
C++-Tricks

auto als Non-Type-Templateparameter

Passgenau

Andreas Fertig

Der Platzhalter auto als Non-Type-Templateparameter ist seit C++17 Bestandteil der Sprache. Er bewirkt, dass der Typ des entsprechenden Non-Type-Templateparameters automatisch abgeleitet wird. Dadurch vereinfachen sich Templates.

C++ kennt zwei verschiedene Arten von Templateparametern: Typ und Nichttyp. Ein Nichttypparameter wie der Non-Type-Templateparameter, kurz NTTP, ist immer ein konkreter Wert, meistens eine Zahl, aber auch Adressen, Funktionszeiger oder enum-Werte sind möglich. Ab C++20 können Entwickler auch float und eigene Klassen verwenden, solange diese bestimmte Bedingungen erfüllen.

Bei Type-Templateparametern erkennt der Compiler zur Kompilierzeit den Typ, lediglich bei expliziten Spezialisierungen gibt der Entwickler ihn direkt an. Bei Non-Type-Templateparametern ist im Templatekopf immer der Typ angeführt. Entweder ermittelt der Compiler den zugehörigen Wert oder der Entwickler setzt ihn wie bei den expliziten Spezialisierungen. Vor C++17 konnte der Compiler den Typ eines Non-Type-Templateparameters nicht ausfindig machen, das führte zu Duplikationen. Als Beispiel dient der Type Trait std::integral_constant, der zur Kompilierzeit verfügbare Typen mit ­einem Wert erstellt. Vor C++17 sah die Verwendung so aus:

Alle heise-Magazine mit heise+ lesen

3,99 € / Woche

Ein Abo, alle Magazine: c't, iX, Mac & i, Make & c't Fotografie

  • Alle heise-Magazine im Browser und als PDF
  • Alle exklusiven heise+ Artikel frei zugänglich
  • heise online mit weniger Werbung lesen
  • Vorteilspreis für Magazin-Abonnenten
Jetzt unbegrenzt weiterlesen Vierwöchentliche Abrechnung.

Alle Ausgaben freischalten

2,60 € 1,49 € / Woche

Nach Testphase 2,60 € wtl.

  • Zugriff auf alle iX-Magazine
  • PDF-Ausgaben zum Herunterladen
  • Zugriff in der iX-App für unterwegs
  • Über 35% günstiger im Testzeitraum
Jetzt testen Nach Testphase jederzeit monatlich kündbar.

Ausgabe einmalig freischalten

8,90 € / Ausgabe

Diese Ausgabe lesen – ohne Abobindung

  • Sicher einkaufen im heise shop
  • Magazin direkt im Browser lesen
  • Dauerhaft als PDF behalten

Kommentieren