Ich habe gerade das Buch "Practical C ++ Metaprogramming" gelesen und es gibt folgendes Beispiel, das ich nicht kompilieren kann. Kannst du mir helfen, das herauszufinden?
%Vor%Ich bekomme einen Kompilierungsfehler, der besagt: 'type' ist kein Mitglied einer direkten oder indirekten Basisklasse von 'make_tuple_of_params'. Es scheint so, als ob die SFINAE nicht wie erwartet funktioniert, da die Standardstruktur ausgewählt ist. Wie behebe ich das?
Der Typ von [] (int, double, float) {}
ist ein unbenannter Klassentyp, der für main
lokal ist, der Verschlusstyp genannt wird. Es ist definitiv nicht void (int, double, float)
; es ist überhaupt kein Funktionstyp. Daher gilt die Spezialisierung für Funktionstypen nicht, und die primäre Vorlage ist ausgewählt. (Beachten Sie, dass in Ihrem Code keine SFINAE enthalten ist).
Wie Sie das beheben können: Ich glaube nicht, dass es eine vollständig allgemeine Lösung gibt. Es könnte eine Lösung / Abhilfe für eine bestimmte some_magic_function
geben, aber das hängt davon ab, was Sie für diese Funktion tun müssen.
Tags und Links c++ variadic-templates c++14 template-meta-programming