Por qué no funciona el trabajo de construcción auto_ptr usando = sintaxis
Me encontré con un error del compilador que no tenía mucho sentido para mí:
#include <memory>
using namespace std;
auto_ptr<Table> table = db->query("select * from t");
error: conversión de 'Tabla *' a tipo no escalar 'std :: auto_ptr <Tabla>' solicitado
Sin embargo, la siguiente línea funciona:
auto_ptr<Table> table(db->query("select * from t"));
¿Qué tiene esta definición del constructor que impide que funcione como esperaba? Pensé que las declaraciones inicializadas usaban los constructores.
Aquí está miauto_ptr
l constructor de @ (del SGI STL):
explicit
auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }