Visual c++ 在VisualStudio9下使用boost::python生成元组

Visual c++ 在VisualStudio9下使用boost::python生成元组,visual-c++,boost-python,Visual C++,Boost Python,尝试构建以下简单示例 #include <boost/python.hpp> using namespace boost::python; tuple head_and_tail(object sequence) { return make_tuple(sequence[0],sequence[-1]); } #包括 使用名称空间boost::python; 元组头和尾(对象序列) { 返回make_元组(序列[0],序列[-1]); } 如果可用,我会在VisualS

尝试构建以下简单示例

#include <boost/python.hpp>

using namespace boost::python;
tuple head_and_tail(object sequence)
{
    return make_tuple(sequence[0],sequence[-1]);
}
#包括
使用名称空间boost::python;
元组头和尾(对象序列)
{
返回make_元组(序列[0],序列[-1]);
}
如果可用,我会在VisualStudio9下出现此编译错误

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>        ]
错误C2668:'boost::python::make_tuple':对重载函数的调用不明确
1> C:\ProgramFiles\boost\u 1\u 42\u 0\boost/python/detail/make\u tuple.hpp(22):可以是“boost::python::tuple boost::python::make\u tuple(const A0&,const A1&)”
1> 与
1>        [
1> A0=boost::python::api::object\u项,
1> A1=boost::python::api::object\u项
1>        ]
1> C:\ProgramFiles\boost\u 1\u 42\u 0\boost/tuple/detail/tuple\u basic.hpp(802):或“boost::tuple::tuple::tuple boost::tuples::make_tuple(const T0&,const T1&)”[使用参数相关查找找到]
1> 与
1>        [
1> T0=boost::python::api::proxy,
1> T1=boost::python::api::proxy,
1> T2=boost::tuples::null\u类型,
1> T3=boost::tuples::null\u类型,
1> T4=boost::tuples::null\u类型,
1> T5=boost::tuples::null_类型,
1> T6=boost::tuples::null\u类型,
1> T7=boost::tuples::null\u类型,
1> T8=boost::tuples::null\u类型,
1> T9=boost::tuples::null\u类型
1>        ]

这是boost::python中的错误,还是我做错了什么?如何编译上述程序?

使用完整名称空间,修复了以下问题:

#include <boost/python.hpp>

using namespace boost::python;
tuple head_and_tail(object sequence)
{
    return boost::python::make_tuple(sequence[0],sequence[-1]);
}
#包括
使用名称空间boost::python;
元组头和尾(对象序列)
{
返回boost::python::make_tuple(序列[0],序列[-1]);
}