make_tuple с boost :: python под Visual Studio 9 - PullRequest
1 голос
/ 29 апреля 2010

Попытка построить следующий простой пример

#include <boost/python.hpp>

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

доступно здесь , я получаю эту ошибку компиляции под 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>        ]

Это ошибка в boost :: python или я что-то не так делаю? Как я могу получить вышеупомянутую программу для компиляции?

1 Ответ

2 голосов
/ 30 апреля 2010

Использование полного пространства имен устраняет проблему:

#include <boost/python.hpp>

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