• [^] # "constexpr" oui, "string literals" non

    Posté par . En réponse à la dépêche Je crée mon jeu vidéo E09 : Techniques de C++11 appliquées au système à entités. Évalué à 1.

    Je suis très intéressé par cette nouvelle dépêche, de cette série que je suis depuis le début ; ce weekend j'ai justement entrepris de récupérer, de comprendre et d'expérimenter l'utilisation de ta libes !

    Une première remarque :

    Maintenant, pour définir un identifiant d'un composant (par exemple), on peut faire :

    struct Foo {
     static const es::ComponentType type = "Foo"_type;
    }

    De mon point de vue, cette syntaxe est assez obscure, tout au moins dans ce cas d'usage (contrairement à l'exemple de "3min + 5s"). J'aurais tendance à privilégier une écriture de la forme suivante, exprimant plus lisiblement l'intention :

    struct Position : public Component {
     static const es::ComponentType type = CompileTimeHash("Position");
    }

    Finalement, dans mes expérimentations avec libes j'ai préféré utiliser de simples entiers saisis manuellement !

    struct Position : public Component {
     static const es::ComponentType type = 1;
    }
    struct Speed : public Component {
     static const es::ComponentType type = 2;
    }
    ...