• [^] # Re: Ça compile pas

    Posté par (site web personnel) . En réponse au journal Le quiz c++ de l'été. Évalué à 3.

    Coucou ! Alors en effet, je n'ai pas mis le code complet afin de ne mettre que les morceaux importants. Voici un exemple compilable. Attention cependant, avec certains niveaux d'optimisations, les appels à f et g pourraient se retrouver inlinés. Pour être sûr que ce n'est pas le cas, il faut les définir dans une unité de compilation séparée (un autre .cpp).

    #include <memory>
    class A {};
    class B : public A {};
    void f(A*)
    {
    }
    void g(const std::shared_ptr<A> &)
    {
    }
    int main()
    {
     auto ptr_a = new A;
     auto ptr_b = new B;
     auto shr_a = std::make_shared<A>();
     auto shr_b = std::make_shared<B>();
     f(ptr_a);
     f(ptr_b);
     g(shr_a);
     g(shr_b);
     return 0;
    }