?
Nun, ich weiß ja noch gar nicht so genau, was ich haben will, bin da noch in der Experimentierphase.
Was ist damit ERREICHEN will, kann ich eben nur in Sätzen erklären, wie ich es eben getan habe.
Ich möchte Daten durch Kanäle schicken, deren Typ erst zur Laufzeit bestimmbar ist. Boost::any oder die Variants passen nicht so ganz in mein Schema. Erstmal habe ich keine Lust mehr auf aufgeblasenes Template-TypeList-Funktional-Gedöns, also an sich eine gewisse Abneigung gegen viele Boost-Ansätze entwickelt (zumindest wenn man dann auch noch damit in Berührung kommt, mag vieles auch an fehlenden Variadics liegen...), zweitens ist es bei mir nicht so, dass ich pro Datum den Typ entscheiden müsste. Ab dem Zeitpunkt, an dem die Daten zu fließen beginnen, ist der Typ fix. Daher wollte ich eher mit TypeInfo-Strukturen oder Klassen arbeiten, zu denen noch Meta-Information (Konvertierungen, etc.) hinzugefügt werden können.
Bevor es losgeht, kann also alles auf Durchführbarkeit gecheckt werden und die nötigen Operationen so gut es geht aus den TypeInfo-Daten bzw. Meta-Daten gepuffert werden. Ab da ist dann alles statisch, bis auf die Daten selber natürlich. Die selbe Situation letztlich, der sich ein statisch typisierter Compiler auch gegenübersieht.
Einzelne Instanzen müssten dann nur noch wissen, dass ein bestimmter Typ Vergleichbar ist und könnten dessen Operationen verwenden, um Maxima auszurechnen oder eine sortierte Liste zu erzeugen, wobei die TypInfos nur einmal für alle Elemente gespeichert werden müssen. So würde ich mir, wo es wegen absoluter Performanz nicht sein muss, auch die ätzenden switch-Blöcke sparen.
Ich habe jetzt mal angefangen das ganze für Integer und Strings durchzuspielen, um einmal ein Bild von allen Seiten zu erhalten, und das dann mit einem pur-statischen enum-Ansatz vergleichen zu können (wobei ich da immer noch nicht weiß, wie ich da ohne Variants Daten durch Interfaces schleifen kann). Gibt es irgendwie Variants, die die Typ-Information einfach nicht mitspeichern, sondern bei denen man das über andere Kanäle vermitteln kann?