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_ptrl constructor de @ (del SGI STL):

explicit
auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }

Respuestas a la pregunta(4)

Su respuesta a la pregunta