¿Cuál es el mejor método para pasar a shared_ptrde un tipo derivado a una función que toma a shared_ptrde un tipo base? Generalmente paso shared_ptrs por referencia para evitar una copia innecesaria: int foo(const shared_ptr<bar>& ptr); pero esto no funciona si trato de hacer algo...