[C++-sig] Strange Boost.Python-related compile error

Lawrence Spector Lawrence.Spector at CanfieldSci.com
Mon Jul 23 23:01:56 CEST 2007


So, I have the following typedef:

typedef std::vector<std::wstring> VecOfStrings;

Inside of a class, one of the methods looks like this:

virtual const VecOfStrings &getVector() const = 0;

The generated Boost.Python bindings for this class have a method which looks like the following inside of the wrapper:

   virtual ::MyNs::MySuite::TFilterValue const getValue(  ) const  {
        if( bp::override func_getValue = this->get_override( "getValue" ) )
                                {
            return func_getValue(  ); // Compile error
                                }
        else
            return this->MyNs::MySuite::CFilterExpression::getValue(  );
    }

This generates the following compile errors:

MySuite.cpp
D:\3rdparty\boost_1_34_0\boost/variant/variant.hpp(1273) : error C2665: 'boost::detail::variant::make_initializer_node::apply<BaseIndexPair,Iterator>::initializer_node::initialize' : none of the 3 overloads could convert all the argument types
        with
        [
            BaseIndexPair=boost::mpl::pair<boost::detail::variant::initializer_root,boost::mpl::int_<0>>,
            Iterator=boost::mpl::l_iter<boost::mpl::list2<long,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>>
        ]
        D:\3rdparty\boost_1_34_0\boost/variant/detail/initializer.hpp(89): could be 'int boost::detail::variant::make_initializer_node::apply<BaseIndexPair,Iterator>::initializer_node::initialize(void *,const long)'
        with
        [
            BaseIndexPair=boost::mpl::pair<boost::detail::variant::initializer_root,boost::mpl::int_<0>>,
            Iterator=boost::mpl::l_iter<boost::mpl::list2<long,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>>
        ]
        D:\3rdparty\boost_1_34_0\boost/variant/detail/initializer.hpp(89): or 'int boost::detail::variant::make_initializer_node::apply<BaseIndexPair,Iterator>::initializer_node::initialize(void *,const std::basic_string<_Elem,_Traits,_Ax> &)'
        with
        [
            BaseIndexPair=boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::initializer_root,boost::mpl::int_<0>>,boost::mpl::l_iter<boost::mpl::list2<long,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>>>::initializer_node,boost::mpl::int_<1>>,
            Iterator=boost::mpl::l_iter<boost::mpl::list1<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>>,
            _Elem=wchar_t,
            _Traits=std::char_traits<wchar_t>,
            _Ax=std::allocator<wchar_t>
        ]
        while trying to match the argument list '(void *, const boost::python::detail::method_result)'
        D:\3rdparty\boost_1_34_0\boost/variant/variant.hpp(1342) : see reference to function template instantiation 'void boost::variant<T0_,T1>::convert_construct<const T>(T &,int,boost::mpl::false_)' being compiled
        with
        [
            T0_=MyNs::MySuite::TFilterValueInt,
            T1=std::wstring,
            T=boost::python::detail::method_result
        ]
        MySuite.cpp(126) : see reference to function template instantiation 'boost::variant<T0_,T1>::variant<boost::python::detail::method_result>(const T &)' being compiled
        with
        [
            T0_=MyNs::MySuite::TFilterValueInt,
            T1=std::wstring,
            T=boost::python::detail::method_result
        ]

    call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86 >nul
cl /Zm800 -nologo @"bin\msvc-8.0\debug\threading-multi\MySuite.obj.rsp"

...failed compile-c-c++ bin\msvc-8.0\debug\threading-multi\MySuite.obj...
...skipped <pbin\msvc-8.0\debug\threading-multi>MySuite.pyd for lack of <pbin\msvc-8.0\debug\threading-multi>MySuite.obj...
...skipped <pbin\msvc-8.0\debug\threading-multi>MySuite.lib for lack of <pbin\msvc-8.0\debug\threading-multi>MySuite.obj...
...failed updating 1 target...
...skipped 2 targets...

Any idea what's going on and how to resolve this?

Thanks in advance,

Lawrence
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20070723/ef616bae/attachment.htm>


More information about the Cplusplus-sig mailing list