I have a GzipFile class which exposes a gzipped file as a python file. I have written an iterator over this class which I use to iterate over an instance of this class. I'm using 1.33.1 and my code compiles cleanly and works on Linux g++ 3.3.5. I am now trying to build on Windows using msvc.net (cl 13.10.6030). This compiler complains that bost::python::objects::iterator_range<NextPolicies,Iterator>::next is not accessible (full compiler complaint below). Does anyone have a solution, or hint to how I can go about fixing this? Thank you in advance for any assistance. This code reproduces the problem: <begin> #include <boost/python.hpp> #include <boost/iterator/iterator_facade.hpp> #include <vector> #include <string> using namespace boost::python; //-------------------------------------------------------------------------------------------------- // class ItTstIterator : public boost::iterator_facade< ItTstIterator, std::string, boost::forward_traversal_tag, std::string > { public: ItTstIterator( std::vector<std::string>::iterator it ) : it_(it) {} virtual ~ItTstIterator() {} private: friend class boost::iterator_core_access; void increment() { ++it_; } bool equal( const ItTstIterator &it ) const { return it_ == it.it_; } std::string dereference() const { return *it_; } private: std::vector<std::string>::iterator it_; }; //-------------------------------------------------------------------------------------------------- class ItTst { public: typedef ItTstIterator iterator; ItTst() { vec_.push_back("one");vec_.push_back("two");vec_.push_back("three"); } ~ItTst() {} // For iteration ItTstIterator begin() { return ItTstIterator( vec_.begin() ); } ItTstIterator end() { return ItTstIterator( vec_.end() ); } private: std::vector< std::string > vec_; }; void wrapPyIter() { class_<ItTst>("ItTst", init<>() ) .def("__iter__", iterator<ItTst>()) ; } <end> And here is the full compiler complaint: cl -c -nologo -GX -GR -Zc:forScope -wd4101 -wd4290 -wd4100 -wd4189 -DWIN32 -Zi -Od -D_DEBUG -DFD_SETSIZE=512 -MDd -Zi -Od -D_DEBUG -DFD_SETSIZE=512 -MDd -DBOOST_SIGNALS_NAMESPACE=tb_signals -D__x86__ -D__NT__ -D__OSVERSION__=5 -D__WIN32__ -GR -EHsc -W3 -w34100 -w34189 -DWIN32 -DQT_LARGEFILE_SUPPORT -DCOMPILE_DL=1 -DQT_DLL -DQT_PLUGIN -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -D_WIN32_WINNT=0x0500 -DFD_SETSIZE=512 -DNOMINMAX -I"C:/Qt/4.2.1/include/QtCore" -I"C:/Qt/4.2.1/include/QtCore" -I"C:/Qt/4.2.1/include/QtNetwork" -I"C:/Qt/4.2.1/include/QtNetwork" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtXml" -I"C:/Qt/4.2.1/include/QtXml" -I"C:/Qt/4.2.1/include/Qt3Support" -I"C:/Qt/4.2.1/include/Qt3Support" -I"C:/Qt/4.2.1/include" -I"..\Common" -I"..\libtbut" -I"C:/Qt/4.2.1/include/ActiveQt" -I"moc" -I"..\libtbut" -I"ui" -I"C:/postgresql\src\interfaces\libpq" -I"C:/postgresql\src\include" -I"C:/Python25/include" -I"C:/Boost/include/boost-1_33_1" -I"c:\omni\omniORB-4.0.3\include" -I"c:\Qt\4.2.1\mkspecs\win32-msvc.net" -Fodebug\ @c:\DOCUME~1\kelly\LOCALS~1\Temp\nm99.tmp wrap_py_iter.cpp C:/Boost\include\boost-1_33_1\boost\detail\compressed_pair.hpp(347) : error C2247: 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' not accessible because 'boost::details::compressed_pair_imp<T1,T2,Version>' uses 'private' to inherit from 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] and [ T1=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, T2=boost::python::return_value_policy<boost::python::return_by_value>, Version=3 ] and [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(51) : see declaration of 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(51) : see declaration of 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\detail\caller.hpp(212) : see reference to class template instantiation 'boost::compressed_pair<T1,T2>' being compiled with [ T1=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, T2=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\detail\caller.hpp(145) : see reference to class template instantiation 'boost::python::detail::caller_arity<1>::impl<F,Policies,Sig>' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, Policies=boost::python::return_value_policy<boost::python::return_by_value>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(37) : see reference to class template instantiation 'boost::python::detail::caller<F,CallPolicies,Sig>' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(89) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_function_aux<F,CallPolicies,Signature>(F,const CallPolicies &,const Sig &)' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Signature=boost::mpl::vector2<result_type,range_ &>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(129) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_function_dispatch<F,CallPolicies,KeywordsOrSignature>(F,const CallPolicies &,const Signature &,boost::mpl::false_)' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, KeywordsOrSignature=boost::mpl::vector2<result_type,range_ &>, Signature=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(137) : see reference to function template instantiation 'boost::python::api::object boost::python::make_function<boost::python::objects::iterator_range<NextPolicies,Iterator>::next,NextPolicies,boost::mpl::vector2<T0,T1>>(F,const CallPolicies &,const KeywordsOrSignature &)' being compiled with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const, T0=result_type, T1=range_ &, F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, KeywordsOrSignature=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(163) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::detail::demand_iterator_class<Iterator,boost::python::return_value_policy<ResultConverterGenerator>>(const char *,Iterator *,const NextPolicies &)' being compiled with [ Iterator=const iterator_const, ResultConverterGenerator=boost::python::return_by_value, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(161) : while compiling class-template member function 'boost::python::objects::iterator_range<NextPolicies,Iterator> boost::python::objects::detail::py_iter_<Target,Iterator,Accessor1,Accessor2,NextPolicies>::operator ()(boost::python::back_reference<T>) const' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const, Target=ItTst, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, T=ItTst & ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(187) : see reference to class template instantiation 'boost::python::objects::detail::py_iter_<Target,Iterator,Accessor1,Accessor2,NextPolicies>' being compiled with [ Target=ItTst, Iterator=iterator_const, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(239) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::detail::make_iterator_function<Target,T,NextPolicies,Accessor1,Accessor2>(const Accessor1 &,const Accessor2 &,const NextPolicies &,Iterator &(__cdecl *)(void),boost::type<Target> *,int)' being compiled with [ Target=ItTst, T=const iterator_const, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Iterator=const iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(39) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::make_iterator_function<Target,NextPolicies,boost::_bi::protected_bind_t<F>,boost::_bi::protected_bind_t<F>>(const Accessor1 &,const Accessor2 &,const NextPolicies &,boost::type<T> *)' being compiled with [ Target=ItTst, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, F=boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, T=ItTst ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(96) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_iterator<T,boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::return_value_policy<ResultConverterGenerator>>(Accessor1,Accessor2,NextPolicies,Target &(__cdecl *)(void))' being compiled with [ T=ItTst, const_=false, ResultConverterGenerator=boost::python::return_by_value, Accessor1=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), Accessor2=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Target=ItTst ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(120) : see reference to function template instantiation 'boost::python::api::object boost::python::range<NextPolicies,boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &)>(Accessor1,Accessor2,NextPolicies *)' being compiled with [ NextPolicies=boost::python::objects::default_iterator_call_policies, const_=false, T=ItTst, Accessor1=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), Accessor2=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &) ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(116) : while compiling class-template member function 'boost::python::iterator<Container>::iterator(void)' with [ Container=ItTst ] wrap_py_iter.cpp(48) : see reference to class template instantiation 'boost::python::iterator<Container>' being compiled with [ Container=ItTst ] NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop. NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN\nmake.exe"' : return code '0x2' Stop.
More info: I have two windows machines both with MSVS.Net 2003. The one that doesn't work is a recent install with compiler version 13.10.6030. My older machine has compiler version 13.10.3077. Has anyone else noticed problems compiling boost python iterators with recent MS compilers? -K On 11/27/06, Kelly Burkhart <kelly.burkhart@gmail.com> wrote:
I have a GzipFile class which exposes a gzipped file as a python file. I have written an iterator over this class which I use to iterate over an instance of this class.
I'm using 1.33.1 and my code compiles cleanly and works on Linux g++ 3.3.5. I am now trying to build on Windows using msvc.net (cl 13.10.6030). This compiler complains that bost::python::objects::iterator_range<NextPolicies,Iterator>::next is not accessible (full compiler complaint below).
Does anyone have a solution, or hint to how I can go about fixing this? Thank you in advance for any assistance.
This code reproduces the problem:
<begin> #include <boost/python.hpp> #include <boost/iterator/iterator_facade.hpp> #include <vector> #include <string>
using namespace boost::python;
//-------------------------------------------------------------------------------------------------- // class ItTstIterator : public boost::iterator_facade< ItTstIterator, std::string,
boost::forward_traversal_tag, std::string > { public: ItTstIterator( std::vector<std::string>::iterator it ) : it_(it) {} virtual ~ItTstIterator() {}
private: friend class boost::iterator_core_access;
void increment() { ++it_; } bool equal( const ItTstIterator &it ) const { return it_ == it.it_; } std::string dereference() const { return *it_; }
private: std::vector<std::string>::iterator it_; };
//-------------------------------------------------------------------------------------------------- class ItTst { public: typedef ItTstIterator iterator;
ItTst() { vec_.push_back("one");vec_.push_back("two");vec_.push_back("three"); } ~ItTst() {}
// For iteration ItTstIterator begin() { return ItTstIterator( vec_.begin() ); } ItTstIterator end() { return ItTstIterator( vec_.end() ); }
private: std::vector< std::string > vec_; };
void wrapPyIter() { class_<ItTst>("ItTst", init<>() ) .def("__iter__", iterator<ItTst>()) ; } <end>
And here is the full compiler complaint:
cl -c -nologo -GX -GR -Zc:forScope -wd4101 -wd4290 -wd4100 -wd4189 -DWIN32 -Zi -Od -D_DEBUG -DFD_SETSIZE=512 -MDd -Zi -Od -D_DEBUG -DFD_SETSIZE=512 -MDd -DBOOST_SIGNALS_NAMESPACE=tb_signals -D__x86__ -D__NT__ -D__OSVERSION__=5 -D__WIN32__ -GR -EHsc -W3 -w34100 -w34189 -DWIN32 -DQT_LARGEFILE_SUPPORT -DCOMPILE_DL=1 -DQT_DLL -DQT_PLUGIN -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -D_WIN32_WINNT=0x0500 -DFD_SETSIZE=512 -DNOMINMAX -I"C:/Qt/4.2.1/include/QtCore" -I"C:/Qt/4.2.1/include/QtCore" -I"C:/Qt/4.2.1/include/QtNetwork" -I"C:/Qt/4.2.1/include/QtNetwork" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtXml" -I"C:/Qt/4.2.1/include/QtXml" -I"C:/Qt/4.2.1/include/Qt3Support" -I"C:/Qt/4.2.1/include/Qt3Support" -I"C:/Qt/4.2.1/include" -I"..\Common" -I"..\libtbut" -I"C:/Qt/4.2.1/include/ActiveQt" -I"moc" -I"..\libtbut" -I"ui" -I"C:/postgresql\src\interfaces\libpq" -I"C:/postgresql\src\include" -I"C:/Python25/include" -I"C:/Boost/include/boost-1_33_1" -I"c:\omni\omniORB-4.0.3\include" -I"c:\Qt\4.2.1\mkspecs\win32-msvc.net" -Fodebug\ @c:\DOCUME~1\kelly\LOCALS~1\Temp\nm99.tmp wrap_py_iter.cpp C:/Boost\include\boost-1_33_1\boost\detail\compressed_pair.hpp(347) : error C2247: 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' not accessible because 'boost::details::compressed_pair_imp<T1,T2,Version>' uses 'private' to inherit from 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] and [ T1=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, T2=boost::python::return_value_policy<boost::python::return_by_value>, Version=3 ] and [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(51) : see declaration of 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(51) : see declaration of 'boost::python::objects::iterator_range<NextPolicies,Iterator>::next' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\detail\caller.hpp(212) : see reference to class template instantiation 'boost::compressed_pair<T1,T2>' being compiled with [ T1=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, T2=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\detail\caller.hpp(145) : see reference to class template instantiation 'boost::python::detail::caller_arity<1>::impl<F,Policies,Sig>' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, Policies=boost::python::return_value_policy<boost::python::return_by_value>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(37) : see reference to class template instantiation 'boost::python::detail::caller<F,CallPolicies,Sig>' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(89) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_function_aux<F,CallPolicies,Signature>(F,const CallPolicies &,const Sig &)' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Signature=boost::mpl::vector2<result_type,range_ &>, Sig=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\make_function.hpp(129) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_function_dispatch<F,CallPolicies,KeywordsOrSignature>(F,const CallPolicies &,const Signature &,boost::mpl::false_)' being compiled with [ F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, KeywordsOrSignature=boost::mpl::vector2<result_type,range_ &>, Signature=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(137) : see reference to function template instantiation 'boost::python::api::object boost::python::make_function<boost::python::objects::iterator_range<NextPolicies,Iterator>::next,NextPolicies,boost::mpl::vector2<T0,T1>>(F,const CallPolicies &,const KeywordsOrSignature &)' being compiled with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const, T0=result_type, T1=range_ &, F=boost::python::objects::iterator_range<boost::python::return_value_policy<boost::python::return_by_value>,iterator_const>::next, CallPolicies=boost::python::return_value_policy<boost::python::return_by_value>, KeywordsOrSignature=boost::mpl::vector2<result_type,range_ &> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(163) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::detail::demand_iterator_class<Iterator,boost::python::return_value_policy<ResultConverterGenerator>>(const char *,Iterator *,const NextPolicies &)' being compiled with [ Iterator=const iterator_const, ResultConverterGenerator=boost::python::return_by_value, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(161) : while compiling class-template member function 'boost::python::objects::iterator_range<NextPolicies,Iterator> boost::python::objects::detail::py_iter_<Target,Iterator,Accessor1,Accessor2,NextPolicies>::operator ()(boost::python::back_reference<T>) const' with [ NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Iterator=iterator_const, Target=ItTst, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, T=ItTst & ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(187) : see reference to class template instantiation 'boost::python::objects::detail::py_iter_<Target,Iterator,Accessor1,Accessor2,NextPolicies>' being compiled with [ Target=ItTst, Iterator=iterator_const, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value> ] C:/Boost\include\boost-1_33_1\boost\python\object\iterator.hpp(239) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::detail::make_iterator_function<Target,T,NextPolicies,Accessor1,Accessor2>(const Accessor1 &,const Accessor2 &,const NextPolicies &,Iterator &(__cdecl *)(void),boost::type<Target> *,int)' being compiled with [ Target=ItTst, T=const iterator_const, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Iterator=const iterator_const ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(39) : see reference to function template instantiation 'boost::python::api::object boost::python::objects::make_iterator_function<Target,NextPolicies,boost::_bi::protected_bind_t<F>,boost::_bi::protected_bind_t<F>>(const Accessor1 &,const Accessor2 &,const NextPolicies &,boost::type<T> *)' being compiled with [ Target=ItTst, NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, F=boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>, Accessor1=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, Accessor2=boost::_bi::protected_bind_t<boost::_bi::bind_t<boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator,boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &),boost::_bi::list1<boost::_bi::list_av_1<boost::arg<1>>::B1>>>, T=ItTst ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(96) : see reference to function template instantiation 'boost::python::api::object boost::python::detail::make_iterator<T,boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::return_value_policy<ResultConverterGenerator>>(Accessor1,Accessor2,NextPolicies,Target &(__cdecl *)(void))' being compiled with [ T=ItTst, const_=false, ResultConverterGenerator=boost::python::return_by_value, Accessor1=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), Accessor2=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), NextPolicies=boost::python::return_value_policy<boost::python::return_by_value>, Target=ItTst ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(120) : see reference to function template instantiation 'boost::python::api::object boost::python::range<NextPolicies,boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &),boost::python::detail::iterators_impl<const_>::apply<T>::iterator(__cdecl *)(T &)>(Accessor1,Accessor2,NextPolicies *)' being compiled with [ NextPolicies=boost::python::objects::default_iterator_call_policies, const_=false, T=ItTst, Accessor1=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &), Accessor2=boost::python::detail::iterators_impl<false>::apply<ItTst>::iterator (__cdecl *)(ItTst &) ] C:/Boost\include\boost-1_33_1\boost\python\iterator.hpp(116) : while compiling class-template member function 'boost::python::iterator<Container>::iterator(void)' with [ Container=ItTst ] wrap_py_iter.cpp(48) : see reference to class template instantiation 'boost::python::iterator<Container>' being compiled with [ Container=ItTst ] NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop. NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN\nmake.exe"' : return code '0x2' Stop.
On 11/29/06, Kelly Burkhart <kelly.burkhart@gmail.com> wrote:
More info: I have two windows machines both with MSVS.Net 2003. The one that doesn't work is a recent install with compiler version 13.10.6030. My older machine has compiler version 13.10.3077.
Has anyone else noticed problems compiling boost python iterators with recent MS compilers?
I have noticed exactly this problem with the newer compiler version. I assumed that it was a mistake somewhere in my code, but I haven't been able to track it down yet. I'm glad to see that it's not just me. -greg
On 11/27/06, Kelly Burkhart <kelly.burkhart@gmail.com> wrote:
I'm using 1.33.1 and my code compiles cleanly and works on Linux g++ 3.3.5. I am now trying to build on Windows using msvc.net (cl 13.10.6030). This compiler complains that bost::python::objects::iterator_range<NextPolicies,Iterator>::next is not accessible (full compiler complaint below).
The problem was private derivation in boost/detail/compressed_pair.hpp. The CVS HEAD version of this file replaced private derivation with protected. Replacing this one file in my 1.33.1 tree solved my problem. -K
On 11/30/06, Kelly Burkhart <kelly.burkhart@gmail.com> wrote:
The problem was private derivation in boost/detail/compressed_pair.hpp. The CVS HEAD version of this file replaced private derivation with protected. Replacing this one file in my 1.33.1 tree solved my problem.
This cleared up the problem for me as well. Thanks Kelly. -greg
participants (2)
-
Greg Landrum -
Kelly Burkhart