template parameter ersetzen


  • Administrator

    unskilled schrieb:

    allerdings müsstest du jz noch alle files vorm compilieren parsen, gucken, mit welchem typ du instanzierst und dann das template an sich auskommentieren (#if 0; #endif), dann die fkt generieren und die generierten fkt einfügen, dann compilieren lassen und dann deine änderungen wieder rückgängig machen... x)

    ROFLMAO ...
    Und in 200 Jahren ist er dann fertig? 😃

    Grüssli



  • Dravere schrieb:

    unskilled schrieb:

    allerdings müsstest du jz noch alle files vorm compilieren parsen, gucken, mit welchem typ du instanzierst und dann das template an sich auskommentieren (#if 0; #endif), dann die fkt generieren und die generierten fkt einfügen, dann compilieren lassen und dann deine änderungen wieder rückgängig machen... x)

    ROFLMAO ...
    Und in 200 Jahren ist er dann fertig? 😃

    deshalb auch das smilie: x)



  • unskilled schrieb:

    naja - so extrem schwer sollte das aber auch nich zu schreiben sein...

    ich habs ma bissl quick and dirty angefangen - vll hat ja wer lust, die todos noch zu machen ;o) fehler sollten aber eigtl keine mehr drin sein - habs aber au nich wirklich getestet ^^

    Naja, ich glaub so einfach geht das auch nicht, ich kann mir zumindest nicht vorstellen, dass damit die vector Klassen erzeugt werden können. Die haben ja default parameter und das allocator Objekt. Für einfache Sachen wäre das eine Lösung.



  • Um das alles wirklich automatisieren zu können bräuchtest du einen Parser, der

    a) die Arbeit des Präprozessors mitmacht (vor allem #includes)
    b) sich jede templatedefinition merkt
    c) bei jeder instantiierung eines Templates den entsprechenden Code erzeugt
    d) eine Typtabelle für alle Variablen (auch die temporären!) im aktuell geparsten Scope führt, um die Templateparameter von Funktionstemplates herleiten zu können

    Der erzeugte "template-Ersatzcode" müsste dann in einen anonymen Namespace verfrachtet werden bzw in header und source aufgeteilt werden um nicht die ODR zu verletzen (z.B. wenn in zwei TUs swap<int> aufgerufen wird)



  • So ein Tool nennt sich C++ Compiler 😉
    Gibt es denn keine C++ -> C Compiler, die portablen C-Code ausspucken? Comeau erzeugt ja leider auf das "Backend" zugeschnittenen Code, den man nicht einfach mit jedem C-Compiler erfolgreich übersetzen kann.



  • Hmm.. stimmt - das fehlt ja auch alles noch xD
    Nen Teil davon war mir ja klar - aber das war wo eher der kleinere ^^
    Wär aber bestimmt mal nen interessantes Projekt : >

    bb

    edit:
    zum odr: naja - das ist ja rel. einfach mit inline zu umgehen ^^


  • Administrator

    unskilled schrieb:

    edit:
    zum odr: naja - das ist ja rel. einfach mit inline zu umgehen ^^

    Kann man Typen auch inline machen? 🙂
    Ich denke, dass wäre noch ein ziemlich grosses Projekt. Da fragt man sich fast, ob man einen Umweg über Assembler machen könnte. Also mit einem anderen Kompiler übersetzen und dann den generierten Assembler Code in die Assemblersprache für den anderen Chipsatz übersetzen. Könnte womöglich einfacher sein 🙂

    Grüssli



  • audacia schrieb:

    ...In so einem Fall würde ich mir Comeau C++ mal ansehen.

    Oha ...

    Breathtaking ...
    Amazing ...
    Fabulous ...

    Das kann doch nur Satire sein, oder?.... (also die Formulierung nicht das Produkt)

    @Topic: Wobei ich mir das auch schon öfter mal gewünscht hätte - nur interessehalber. Einfach mal sehen, was ein Compiler so "intern" aus templates macht.

    Die Instantiierung ist ja schon ein Prozess, der ein wenig "vorab" läuft und dessen Ergebnisse oftmals mit "normalen C++-Elementen" erklärt werden.
    Es gibt allerdings auch Sachen wie z.B. der Vorzug von "normalen Funktionen" ggü. template-Instanzen, bei denen die template-Herkunft durchaus noch eine Rolle spielt.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Das kann doch nur Satire sein, oder?.... (also die Formulierung nicht das Produkt)

    Das Produkt jedenfalls nicht; das ist so ziemlich der konformste C++-Compiler, den es gibt (dank dem EDG-Frontend). Du kannst ihn online testen: http://www.comeaucomputing.com/tryitout/

    Aber was die Produktwerbung angeht, die ist in der Tat eigenwillig.

    Comeau Computing schrieb:

    Bursting With So Much Language Support It Hurts!

    😃



  • Dravere schrieb:

    unskilled schrieb:

    edit:
    zum odr: naja - das ist ja rel. einfach mit inline zu umgehen ^^

    Kann man Typen auch inline machen? 🙂

    ach verdammt 😃



  • Simon2 schrieb:

    Das kann doch nur Satire sein, oder?.... (also die Formulierung nicht das Produkt)

    Was ich auch nahezu liebe, ist das sehr moderne und übersichtliche Design der Seite. Natürlich nach dem unten blinkenden "Order Now!"-Balken. 😃



  • Nexus schrieb:

    Simon2 schrieb:

    Das kann doch nur Satire sein, oder?.... (also die Formulierung nicht das Produkt)

    Was ich auch nahezu liebe, ist das sehr moderne und übersichtliche Design der Seite. Natürlich nach dem unten blinkenden "Order Now!"-Balken. 😃

    Hehe.. Sehe ich auch so.. - Aber wer so ein gutes Produkt hat, kann sich so etwas ja schon leisten. 🙂


Anmelden zum Antworten