2010-04-29 3 views
1

Essayer de construire l'exemple simple suivantmake_tuple avec le python de boost sous Visual Studio 9

#include <boost/python.hpp> 

using namespace boost::python; 
tuple head_and_tail(object sequence) 
{ 
    return make_tuple(sequence[0],sequence[-1]); 
} 

disponible here, je me retrouve avec cette erreur de compilation sous Visual Studio 9

error C2668: 'boost::python::make_tuple' : ambiguous call to overloaded function 
1>  C:\Program Files\boost_1_42_0\boost/python/detail/make_tuple.hpp(22): could be 'boost::python::tuple boost::python::make_tuple<boost::python::api::object_item,boost::python::api::object_item>(const A0 &,const A1 &)' 
1>  with 
1>  [ 
1>   A0=boost::python::api::object_item, 
1>   A1=boost::python::api::object_item 
1>  ] 
1>  C:\Program Files\boost_1_42_0\boost/tuple/detail/tuple_basic.hpp(802): or  'boost::tuples::tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9> boost::tuples::make_tuple<boost::python::api::object_item,boost::python::api::object_item>(const T0 &,const T1 &)' [found using argument-dependent lookup] 
1>  with 
1>  [ 
1>   T0=boost::python::api::proxy<boost::python::api::item_policies>, 
1>   T1=boost::python::api::proxy<boost::python::api::item_policies>, 
1>   T2=boost::tuples::null_type, 
1>   T3=boost::tuples::null_type, 
1>   T4=boost::tuples::null_type, 
1>   T5=boost::tuples::null_type, 
1>   T6=boost::tuples::null_type, 
1>   T7=boost::tuples::null_type, 
1>   T8=boost::tuples::null_type, 
1>   T9=boost::tuples::null_type 
1>  ] 

Est-ce un bug dans boost :: python, ou est-ce que je fais quelque chose de mal? Comment puis-je compiler le programme ci-dessus?

Répondre

2

Utilisation de l'espace de noms complet, résout le problème:

#include <boost/python.hpp> 

using namespace boost::python; 
tuple head_and_tail(object sequence) 
{ 
    return boost::python::make_tuple(sequence[0],sequence[-1]); 
}