¿Cómo exponer std :: vector como una lista de Python usando SWIG?

Estoy tratando de exponer esta función a Python usando SWIG:

std::vector get_match_stats(); 

Y quiero que SWIG genere código de envoltura para Python para poder verlo como una lista de enteros.

Agregando esto al archivo .i:

 % incluye "typemaps.i"
 % incluye "std_vector.i"

 espacio de nombres estándar
 {
   % template (IntVector) vector ;
 }

Estoy ejecutando SWIG Version 1.3.36 y llamando a -Wall con -Wall y no recibo ninguna advertencia.

Puedo obtener acceso a una lista pero recibo un montón de advertencias al comstackr con -Wall (con g++ (GCC) 4.2.4 ) el código C ++ generado que dice:

   advertencia: la desreferenciación del puntero con tipo de letra infringirá las reglas de alias estricto

¿Estoy exponiendo la función correctamente? Si es así, ¿qué significa la advertencia?


Estas son las líneas antes de la línea ofensiva en la misma función:

 SWIGINTERN PyObject * _wrap_IntVector_erase__SWIG_0 (PyObject * SWIGUNUSEDPARM (self), PyObject * args) {
   PyObject * resultobj = 0;
   std :: vector * arg1 = (std :: vector *) 0;
   std :: vector :: iterator arg2;
   std :: vector :: iterator result;
   void * argp1 = 0;
   int res1 = 0;
   swig :: PySwigIterator * iter2 = 0;
   int res2;
   PyObject * obj0 = 0;
   PyObject * obj1 = 0;

   if (! PyArg_ParseTuple (args, (char *) "OO: IntVector_erase", & obj0, & obj1)) SWIG_fail;
   res1 = SWIG_ConvertPtr (obj0, & argp1, SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0);
   if (! SWIG_IsOK (res1)) {
     SWIG_exception_fail (SWIG_ArgError (res1), "en el método '" "IntVector_erase" "', argumento" "1" "de tipo '" "std :: vector *" "'"); 
   }
   arg1 = reinterpret_cast *> (argp1);

Y esta es la línea ofensiva:

   res2 = SWIG_ConvertPtr (obj1, SWIG_as_voidptrptr (& iter2), swig :: PySwigIterator :: descriptor (), 0);

Más código sigue eso.

La advertencia generada al comstackr con g ++ 4.2.4 es:

 swig_iss_wrap.cxx: En la función 'PyObject * _wrap_IntVector_erase__SWIG_0 (PyObject *, PyObject *)':
 swig_iss_wrap.cxx: 5885: advertencia: la desreferenciación del puntero con tipo de letra infringirá las reglas de alias estricto

 %template(IntVector) vector; 

No tengo mucha experiencia con Swig, pero ¿estás incluyendo tu archivo de cabecera C ++ en tu archivo .i? Pruebe uno (o ambos) de

 %include "myvector.h" %{ # include "myvector.h" %}