Vorlage mit dem Standardwert des Methodenzeigerarguments

8

Betrachten Sie diese spezielle Container-Klasse, die Typen speichert, die sowohl Schlüssel als auch Wert enthalten, also

%Vor%

K ist der Typ eines Schlüssels, T ist ein Werttyp und der Methodenzeiger wird verwendet, um den Schlüssel aus dem Wert zu retrieven.

Es funktioniert gut, aber ich möchte einen Standard für den Methodenzeiger hinzufügen, so dass, wenn es vom Aufrufer nicht angegeben wurde, operator K() const wie folgt lauten würde:

%Vor%

aber das kompiliert nicht und gibt an, dass es no member operator const K on A (<- my class I test this with) gibt, wenn ich versuche es zu instanziieren (und es gibt eine solche Methode). Ist es sogar möglich, den Standardwert eines Methodenzeiger-Template-Arguments zu haben? Wenn ja, wie lautet die korrekte Syntax?

BEARBEITEN: Zusätzlich zu der Lösung unten gibt es eine "Korrektur" für die Fälle, wenn T ein Zeiger ist, der die neue C ++ 11 Funktion std::remove_pointer<T>::type verwendet, also:

%Vor%     
Resurrection 16.12.2015, 16:39
quelle

1 Antwort

5

Der Name der Funktion ist nur operator K . Seine Qualifikation ist nicht Teil des Namens. Probieren Sie:

%Vor%     
Kerrek SB 16.12.2015, 16:45
quelle