[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