Vorteile der automatischen Template-Parameter-Ableitung in C 17
C 17 führt das
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
Erhöhter Komfort
Ersetzen expliziter Typdeklarationen durch
template <typename Type, Type value> constexpr Type constant = value; constexpr auto const IntConstant42 = constant<int, 42>;
Dieser Code kann mit
template <auto value> constexpr auto constant = value; constexpr auto const IntConstant42 = constant<42>;
Verbesserte Prägnanz des Codes
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>;
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!