• [^] # Re: C++ oui mais pourquoi ?

    Posté par (site web personnel) . En réponse au journal Pythran : C++ pour les serpents. Évalué à 7.

    Oui ! Plus précisément

    Pour la lib standard

    • list -> std::vector
    • set -> std::unordered_set
    • dict -> std::unordered_map
    • tuple -> std::tuple (assez costaud celui là)
    • print(truc, muche) -> std::cout << truc << ' ' << muche

    Pour l'inférence de type

    decltype et declval font des merveilles

    Pour la gestion mémoire

    vive les std::shared_ptr

    Petit exemple

    def foo(a):
     b = bar
     return b() + a
    foo(10)
    
    

    qui devient (en simplifiant)

    struct foo {
     template<class T>
     decltype(std::declval<b>()() + std::declval<T>()) operator()(T&& a) {
     auto b = bar();
     return b() + a;
     }
    };
    foo()(10);
    
    

    La crème de la crème

    mais la crème, c'est les variadic templates qui permettent d'implémenter de façon élégante les fonctions intrinsèques de la lib standard du genre reduce et cie…