Heim > Backend-Entwicklung > C++ > Wie erreicht man einen Trailing-Return-Typ mit einer variadischen Vorlagenfunktion für die Summation?

Wie erreicht man einen Trailing-Return-Typ mit einer variadischen Vorlagenfunktion für die Summation?

Barbara Streisand
Freigeben: 2024-11-09 12:34:02
Original
359 Leute haben es durchsucht

 How to Achieve Trailing Return Type with a Variadic Template Function for Summation?

Trailing Return Type Using decltype with a Variadic Template Function

Diese Anfrage zielt darauf ab, einen einfachen Addierer zu konstruieren, der die Summe einer beliebigen Anzahl von berechnet Argumente mit dem entsprechenden Rückgabetyp. Die aktuelle Implementierung weist jedoch Einschränkungen bei mehreren Argumenten auf. In diesem Artikel wird das zugrunde liegende Problem untersucht und eine mögliche Problemumgehung untersucht.

Die erste Implementierung nutzt die Syntax des Typs „Trailing Return“, um die Summationsfunktion zu vereinfachen. Bei Argumenten mit mehr als zwei treten jedoch Kompilierungsfehler auf, die darauf hinweisen, dass die Funktion undefiniert ist. Diese Anomalie ist auf die Tatsache zurückzuführen, dass die variadic-Funktionsvorlage deklariert wird, nachdem ihr Rückgabetyp angegeben wurde. Daher kann der decltype()-Ausdruck nicht auf die variadic-Funktionsvorlage selbst verweisen.

Obwohl C 0x rekursive Aufrufe im ->decltype(expr)-Teil zulässt, werden bestimmte Szenarios wie dieses möglicherweise nicht unterstützt . Um dieses Problem zu umgehen, wird eine benutzerdefinierte Merkmalsklasse namens „sum_type“ eingeführt. Es ermöglicht das Ersetzen von decltype durch den Typnamen sum_type::type und löst so die Kompilierungsprobleme.

Die anfängliche Implementierung gibt jedoch decltype((a b) c) anstelle des erwarteten zurück decltype(a (b c)). Um dies zu beheben, kann die sum_type-Spezialisierung geändert werden, um die gewünschte Reihenfolge der Operationen sicherzustellen, was zur endgültigen Lösung führt.

Das obige ist der detaillierte Inhalt vonWie erreicht man einen Trailing-Return-Typ mit einer variadischen Vorlagenfunktion für die Summation?. 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