Variadic Functions mit Typlisten

Mickeyman

Mitglied
Guten Tag erst ein mal,
wie aus der Überschrift vielleicht zu entnehmen ist, versuche ich auf die Parameter in einer Funktion/Methode mit variabler Parameteranzahl ohne die C-Makros zuzugreifen. Zu diesem Zweck verwende ich Typlisten. Der Aufruf ist wie folgt:
Code:
MergeToString( VarArg_Helper<LOKI_TYPELIST_4(int,int)>(), 1, 2 );
Wärend des Kompilierens wird dann die Position(bzw. die Anzahl der Bytes bis zum jeweiligem Paramter) der einzelnen Parameter ermittelt, was auch zu funktionieren scheint.
Als kleine Vorwegnahme, die Klasse VarArg_Helper hat eigentlich keine Membervariablen (Braucht eigentlich keine ...). Diese Klasse besitzt eine Template-Methode, die das geforderte Argument mit Typ zurückliefert. Leider funktioniert dies nicht immer. S.h. folgende Liste:
<int>,111 - Funktioniert ohne Membervariable.
<int,int,int,int>,111,222,333,444 - Funktioniert ohne Membervariable.
<double,int>,1.11,222 - Funktioniert nur mit Membervariable.
<int,double>,111,2.22 - Funktioniert nur ohne Membervariable.
<double,int,int>,1.11,222,333 - ohne Membervariable, dabei werden nur 2 und 3 vertauscht.
<int,int,double>,111,222,3.33 - Funktioniert nur ohne Membervariable.

Die Membervariable, dient eigentlich keinem Zweck. Sie ist nur als Dummy manchmal present.
Die Auswahl der Parameter funktioniert wie folgt:
Code:
reinterpret_cast<unsigned char*>(&*this)+"SumSize";
Bei "SumSize" wird die Größe des eigenen Objektes hinzu gezählt.

So, ich hoffe dies genügt für's Erste. Stehe für weitere Fragen natürlich gerne zur Verfügung.

Mit freundlichen Grüßen Mickeyman.

P.S. Benutze VS2008
 
Zuletzt bearbeitet:
Zurück