Heim > Backend-Entwicklung > C++ > Wie vereinfacht das Schlüsselwort „auto' von C 17 die Ableitung von Vorlagenparametern?

Wie vereinfacht das Schlüsselwort „auto' von C 17 die Ableitung von Vorlagenparametern?

Barbara Streisand
Freigeben: 2024-12-04 13:47:10
Original
498 Leute haben es durchsucht

How Does C  17's `auto` Keyword Simplify Template Parameter Deduction?

Vorteile der automatischen Template-Parameter-Ableitung in C 17

C 17 führt das Schlüsselwort in Vorlagenparametern, eine bedeutende Ergänzung, die zahlreiche Vorteile bietet.

Natürliche Erweiterung von auto für die Vorlageninstanziierung

Ähnlich dem Schlüsselwort auto, das für die Variablendeklaration verwendet wird, < automatisch> In Vorlagenparametern können Sie den Typ von Nichttypparametern zum Zeitpunkt der Instanziierung ableiten. Dadurch entfällt die Notwendigkeit, den Parametertyp explizit anzugeben, wie im folgenden Beispiel zu sehen ist:

auto v1 = constant<5>;      // v1 == 5, decltype(v1) is int
auto v2 = constant<true>;   // v2 == true, decltype(v2) is bool
auto v3 = constant<'a'>;    // v3 == 'a', decltype(v3) is char
Nach dem Login kopieren

Erhöhter Komfort

Ersetzen expliziter Typdeklarationen durch Vereinfacht den Vorlagencode erheblich und macht ihn lesbarer und wartbarer. Betrachten Sie den folgenden Code:

template <typename Type, Type value> constexpr Type constant = value;
constexpr auto const IntConstant42 = constant<int, 42>;
Nach dem Login kopieren

Dieser Code kann mit umgeschrieben werden. wie folgt:

template <auto value> constexpr auto constant = value;
constexpr auto const IntConstant42 = constant<42>;
Nach dem Login kopieren

Verbesserte Prägnanz des Codes

ist besonders nützlich, wenn mit variadischen Vorlagenparametern gearbeitet wird. Beispielsweise wird das Erstellen einer Liste konstanter Werte zur Kompilierzeit prägnanter und unkomplizierter:

template <auto ... vs> struct HeterogenousValueList {};
using MyList1 = HeterogenousValueList<42, 'X', 13u>;

template <auto v0, decltype(v0) ... vs> struct HomogenousValueList {};
using MyList2 = HomogenousValueList<1, 2, 3>;
Nach dem Login kopieren

Im Vergleich dazu würde das Erreichen der gleichen Funktionalität in der Zeit vor C 17 ausführlichere und kompliziertere Konstrukte mit zusätzlichen Vorlagen erfordern.

Das obige ist der detaillierte Inhalt vonWie vereinfacht das Schlüsselwort „auto' von C 17 die Ableitung von Vorlagenparametern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage