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 に答える