template<class T,T Value> nicht erlaubt?



  • Ich habe mal irgendwo gelesen, dass der gcc das vor der standardisirung konnte. Wurde aber rausgenommen um standard konformer zu werden.

    Der eigentlich Grund wieso man es rausgelassen hat ist glaub ich :

    const double a=5.8;
    char a[b];
    

    Damit du double als template parameter verwenden kannst, muss es eine compiletime Variable. Diese muss aber ganzahlig sein damit man damit ein Array erschaffen kann.

    Also braucht man dafür 2 compiletime Variablen und den Aufwand dies zu implementiren übersteigt den Nutzen.

    Wenn du Kommazahlen brauchst dann schreib dir doch einfach eine Bruch Klasse.



  • Wenn du Kommazahlen brauchst dann schreib dir doch einfach eine Bruch Klasse.

    hab ich schon 😉
    waren imho nur 2 zeilen in var die geändert werden mussten(mal abgesehen davon, dass ich alle anderen operationen die ich bis dahin geschrieben hab überarbeiten musste^^)



  • space schrieb:

    Man kann aber Referenzen verwenden:

    template<const float& f>
    class A
    {};
    
    A<5.0f> x;
    

    Das ist kein legales C++.


Anmelden zum Antworten