Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
In C++20 wird eine Spracherweiterung rein kommen, die schon gut 10 Jahre in entwicklung ist und sich um die reduzierung von Template Fehlern reduzieren soll, sowie Code Compliance zur Compile Time ermöglichst. Die rede ist von concepts und requires keyword, welche hier erklärt werden und hier findet man vorgefertigte constraints in der STL.
Mit dem Sprachfeature kann man z.B. sicher gehen, dass der Datencontainer für SIMD aligned und in der passenden größe ist, der Datentyp für ein Container moveable ist oder der Container für ein Algorithmus random access unterstützt oder thread safe makiert ist. Das konnte man auch vorher aber nun ist es ganz klar kommuniziert, da statt ein Fehler irgendwo tief im Template basierten Code ein unverständlichen Fehler wirft, wird ein Fehler am Template geworfen, dass der übergebene Template Parameter nicht dem concept entspricht.
Code:
template<ScalableVector T>//Wird hier ein Fehler werfen, wenn der Parameter nicht mindestens 16Byte aligned und numerischen ist.
T& Matrix44::operation*(T& B){
...
return B;
}
template<class T>
T& Matrix44::operation*(T& B){
...//Der Fehler wird irgendwo in anderen Code auftreten, z.B. in der intrinsic implementierung mit ner mega langen liste von Schritten zum Code.
return B;
}
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.