1

尝试构建以下简单示例

#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 中的错误,还是我做错了什么?我怎样才能让上面的程序编译?

4

1 回答 1

2

使用完整的命名空间,解决了这个问题:

#include <boost/python.hpp>

using namespace boost::python;
tuple head_and_tail(object sequence)
{
    return boost::python::make_tuple(sequence[0],sequence[-1]);
}
于 2010-04-29T23:34:13.423 回答