Heim > Backend-Entwicklung > C++ > Warum schlägt die Typableitung für meine TMap-Vorlage in diesem Funktionsaufruf fehl?

Warum schlägt die Typableitung für meine TMap-Vorlage in diesem Funktionsaufruf fehl?

Susan Sarandon
Freigeben: 2024-12-23 01:10:08
Original
765 Leute haben es durchsucht

Why Does Type Deduction Fail for My TMap Template in This Function Call?

Typabzugsfehler in der TMap-Vorlage

Als Antwort auf die Abfrage bezüglich eines Abzugsfehlers beim Aufrufen der Testfunktion liegt das Problem in der nicht ableitbarer Kontext, in dem der T-Vorlagenparameter instanziiert wird.

Innerhalb der Testfunktion versucht der Compiler dies Leiten Sie den Typ T basierend auf dem Typ des Parameters tmap_ ab. Da es jedoch möglicherweise mehrere Spezialisierungen der TMap-Vorlage für verschiedene Typen geben könnte (z. B. TMap und TMap), kann der Compiler den Typ von T nicht eindeutig bestimmen, indem er allein den Typ von tmap_ untersucht.

Stellen Sie sich eine hypothetische Spezialisierung vor:

template <>
struct TMap<SomeType>
{
    typedef std::map<double, double> Type;
};
Nach dem Login kopieren

Hierbei Szenario wäre TMap::Type äquivalent zu std::map. Wenn jedoch eine andere Spezialisierung für OtherType existiert, die seinen Typ auch als std::map definiert, kann der Compiler nicht ableiten, welchem ​​Typ T entspricht, wenn er mit dem std::map konfrontiert wird. Typ von tmap_.

Der Mangel an Informationen, die dem Compiler zur Verfügung stehen, um eine eindeutige Entsprechung zwischen dem Typ von tmap_ und dem Typ von T herzustellen, führt zu dem gemeldeten Abzugsfehler. Um dieses Problem zu beheben, muss der Typ T beim Aufruf der Testfunktion explizit angegeben werden, um sicherzustellen, dass die richtige Vorlagenspezialisierung ausgewählt wird.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Typableitung für meine TMap-Vorlage in diesem Funktionsaufruf fehl?. 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