gibts sowas schon?
-
langsam muss ich meinem neuesten programmierprojekt einen sinn geben, das thema ist metaprogrammierung, der schwierigkeitsgrad ist:gigantisch, und der sinngehalt: bisher nahe null. Es ist echt schlimm auf dem bereich der metaprogrammierung noch was zu finden, was nicht schon mindestens 10 andere vorher gemacht haben ;).
da ich bei google bisher noch nichts gefunden habe, wollte ich mal fragen, ob jemand von euch vielleicht(bzw hoffentlich nicht :D, dann kriegt das ganze nämlich nie einen sinn^^ ) eine librarie kennt, die folgende sachen unterstützt:
1.binden von template parametern
2. das lambda kalkyl für statische typausdrücke.das erste sollte klar sein:
template<class a,class b> struct c; //... typedef bind<c,2,int>::Type d;//ersetzt den 2 template parameter mit int typedef d<float> e;//so wird der neue Typ dann genutzt
das 2. ist etwas komplizierter:
//var ist eine einfache struct die werte speichert, mul=multiplikation,add=addition typedef lambda<Add<Empty<0>,Empty<1> >::Type Addition;//erzeugt lambda objekt mit 2 template parametern Addition<var<1>,var<2> >//berechnet 1+2 //anderes lambda mit etwas mehr sinn :) typedef lambda<Addition<Empty<0>,Mul<Empty<0>,Empty<1> > >::Type AddMul;//erzeugt wieder ein lambda objekt, aber diesmal wird der Empty<0> parameter 2 mal genutzt //benutzung: AddMul<var<2>,var<3> >::Value //berechnet 2+2*3,effektiv ein template parameter gespart^^
a) gibts sowas schon?(bitte nicht^^)
b) was haltet ihr von sowas(mal abgesehen davon, dass ihr komplette compiletime berechnungen eh nicht mögt^^)
c) was würdet ihr in einer mtl(meta-template-librarie) noch gerne drin sehen, was ihr vielleicht bei anderen bisher evrmisst habt?
-
Kannst du mal ein paar mpl-bsp.'s geben? Klingt interessant! (Ist loki sowas?)
-
loki/boost(teile davon)/blitz++ um mal die bekannteren zu nennen.
-
also: meta programming==generische Programmierung?
Schön, wieder was gelernt!
-
ness schrieb:
also: meta programming==generische Programmierung?
Schön, wieder was gelernt!nein. bei der meta template programmierung werden sachen zur Compile-Zeit berechnet, anstatt wie normal zur Laufzeit.
-
........ schrieb:
ness schrieb:
also: meta programming==generische Programmierung?
Schön, wieder was gelernt!nein. bei der meta template programmierung werden sachen zur Compile-Zeit berechnet, anstatt wie normal zur Laufzeit.
es werden auch einige höchst generische dinge dabei getan, die mtp umfasst auch typmanipulation in höchstem maße.
-
imho ist es irgendwie nicht so sinnvoll, ausser du hast konkrete anwendung dafür, oder es macht dir einfach riesen spass. ich habe bis jetzt noch _nie_ derartige konstrukte gebraucht (oder sie waren so versteckt, dass ich sie nicht entdeckt habe), und ich hab dann doch schon hier und da meine nase drin gehabt. seh das nicht als pöbelei, aber ich mein, wenn die obigen 2 gründe nicht zutreffen, dann schlägt dein hauptargument (10 andere habens schon getan) alle positiva tot
-
lach* mir machts irren spaß
es ist mal schön, sich um jedes noch so einfache c++ konstrukt sorgen zu können
das einzige problem ist wie immer der compiler(der mich grad drauf hinweist, dass ich zwegs Bugreport meinen source an mingw.org schicken sollte ;)).//edit der fehler scheint krasser zu sein, als erwartet: sogar über commandline geht mir der g++ am code kaputt^^
muss ich mir wohl nochmal einen anderen compiler an land ziehen
//edit fehlerpunkt gefunden, trotzdem noch nciht klar, was da schief läuft^^