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
Barbara StreisandOriginal
2024-12-04 13:47:10533Durchsuche

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

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>;

Dieser Code kann mit umgeschrieben werden. wie folgt:

template <auto value> constexpr auto constant = value;
constexpr auto const IntConstant42 = constant<42>;

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>;

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!

Stellungnahme:
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