Bonjour,
Je me pose deux questions à propos des pointeurs intelligents en C++11.
1 - std::shared_ptr et make_shared n'existe pas avec mon compilateur, MinGW / GCC 4.x sous windows; j'ai recours aux shared_ptr de boost à la place, qui sont apparament en tout point identiques. J'ai cru comprendre qu'il y avait des fix pour make_unique mais je n'ai rien vu pour make_shared.
En outre, pourquoi make_shared a-t-il été inventé ? Quelqu'un peut-il m'expliquer pourquoi ce code est considéré comme mauvais ?
1 | shared_ptr<Foo> bar(new Foo(... ctor args ...) ); |
2 - A propos de unique_ptr, j'ai beau lire, relire et rerelire des docs et des explications, même celles contenant des exemples bidon, je ne comprends toujours pas l'intérêt qu'il y a à l'utiliser à la place de shared_ptr. IL me semble que le comptage de référence est quand même extrêmement stable, et en cas de boucles on a weak_ptr; il y a des cas concrets où on ne peut pas utiliser shared_ptr et/ou où unique_ptr est vraiment mieux ? pourquoi ?
Merci pour vos réponses.