functor_traits und lambda_traits



  • Arcoth schrieb:

    @Nathan Für matched_t & co. etwas benutze ich das oder ähnliches. Fasst du so etwas nicht zusammen?

    Ich brauchte zu dem Zeitpunkt nur zwei einfache Typedefs unterschiedlicher Größe, da kam ich gar nicht auf die Idee das zu generalisieren.
    Dein rank Ding ist aber nice.

    Und war es wirklich nötig checker als noexcept zu markieren?

    Gewohnheit. Ich war damals (vor 6 Monaten oder so) in der Phase, wo noexcept mein Default für Funktionen war.
    Für neueren Code hab ich meine Exceptionspolicies geändert und somit auch mein noexcept. Ich nutz das jetzt nur aus semantischen Gründen, für Funktionen die nie schief gehen können (Ein operator[] ist bspw. nicht noexcept*, selbst wenn er nicht den Index checkt, man kann einen Segfault kriegen, d.h. die Funktion failen).

    Endlich ist mir bei Nathans Version aufgefallen warum die Rückgabetypen Referenzen sind - wären ja sonst beides Zeiger.

    Da hast du mir was voraus. Ich musste beim Copy-Pasten erst einmal ewig überlegen, wieso Referenzen.

    *Genau genommen ist der idR ein spezielles NOFAIL, was "geht nur schief, wenn Programmierer dumm ist" bedeutet und je nachdem ob Logikfehler gecheckt werden noexcept oder nicht ist, aber darum gehts hier nicht.


  • Mod

    Genau genommen ist der idR ein spezielles NOFAIL, was "geht nur schief, wenn Programmierer dumm ist" bedeutet

    😃 😃

    man kann einen Segfault kriegen,

    Du tust da aber entsprechende Assertions rein, richtig?



  • Arcoth schrieb:

    man kann einen Segfault kriegen,

    Du tust da aber entsprechende Assertions rein, richtig?

    Ja, ich habe ein spezielles CHECK-Makro, das ist quasi wie ein assert, nur mit Priorität (implementation-Fehler muss man jetzt nicht immer überprüfen...) und kann bei Bedarf auch Exceptions werfen. Deswegen ist der NOFAIL, wenn checks deaktiviert sind, also auch noexcept um ggf. die Optimierung zu kriegen.


Anmelden zum Antworten