Ich möchte in meinen Projekten eine Vorlagenschnittstelle für Datenverarbeitungsklassen erstellen.
Ich kann so etwas schreiben:
%Vor%Angenommen, ich definiere eine Klasse auf diese Weise:
%Vor%Nun, die Frage, kann ich meine Template-Schnittstelle irgendwie so definieren, dass als Parameter nicht nur T, sondern die gesamte Signatur der Process () - Funktion erhalten wird.
Ich möchte etwas, das so funktioniert:
%Vor%Ist es möglich? Ich weiß, dass zum Beispiel boost :: signal auf diese Weise Template-Parameter erhält, aber wenn ich richtig verstehe, verwenden sie dort viel Schwarzmagie.
Ja, kannst du. Aber in C ++ 03 müssen Sie Code für jede Anzahl von Parametern kopieren / einfügen (nicht zu schlecht, da hier keine Überladungen für const / non-const usw. benötigt werden. Das constnes ist bereits bekannt!).
%Vor%In C ++ 0x können Sie
schreiben %Vor%Wie viel schöner!