D
hustbaer schrieb:
dooooomi schrieb:
Wenn natürlich noch jemand eine Idee hätte, wie man sämtliche nötigen Overloads (mit konstanten und nicht-konstanten Referenzen) per Boost.Preprocessor erzeugen könnte, würde mich das nach wie vor sehr interessieren.
Das würde ich garnicht erst versuchen. Das würde dir die Compile-Zeiten extrem hochjagen. Angenommen du willst z.B. 10 Parameter zulassen, wären das schon 1024 Overloads. Bei jedem Aufruf müsste der Compiler dann "das beste" aus 1024 Funktionstemplates aussuchen.
Wenn ihr gratis Kaffee in der Firma habt, und du gerne erzwungene Pausen machst, dann mach es so
Leider hast du völlig Recht. Ich habe mir einmal die Overloads für 10 Parameter erzeugt (nicht mit Boost.Preprocessor, sondern mittels eines kleinen Python-Scripts). Da hat der Compiler schon kräftig dran zu arbeiten. Und wenn ich mir dann vorstelle, wie das erst sein soll, wenn der Code nicht "fertig" generiert wäre, sondern erst vom Präprozessor erzeugt würde, der ja auch nie für sowas gedacht war...
Mit einer kleineren Anzahl von Parametern (konkret brauche ich derzeit maximal 7) wird's natürlich deutlich schneller, aber eine wirkliche Lösung ist das ja auch nicht. Dann bleibe ich lieber bis auf Weiteres bei Dravere's letztem Vorschlag, und freue mich schonmal auf C++0x, wo das alles dank Variadic Templates und Rvalue-References dann in einer einzigen Zeile geht