• [^] # Re: Déçu

    Posté par . En réponse à la dépêche Retard(s) pour la prochaine version de C++. Évalué à 8.

    je dois donc préciser au compilateur avec un concept que T doit avoir un opérateur '<'?
    Le compilateur n'est pas capable de le faire tout seul à la compilation ? C'est étonnant !


    Il est tout à fait capable de le fait tout seul, l'intérêt des concepts c'est de rendre les messages d'erreur plus explicites, notamment lorsque plusieurs types templates sont imbriqués.

    Par exemple avec un code comme celui-ci :

    class Key {};

    int main()
    {
    std::map<Key, int> myMap;
    myMap[Key()] = 5;
    }


    Actuellement le compilateur te sort :
    error: no match for call to '(std::map<Key,int, std::less, std::allocator<std::pair<const Key, int> > >) (Key)'

    Alors qu'avec les concepts il pourrait sortir:
    error: Type Key doesn't respect concept LessThanComparable

    Étienne