[circular_buffer] problem compiling in VC80

The following code will not compile in MSVC80. It seems to be caused by an attempt to access a private member which is made public for the unit testing and so may not be caught by the boost unit tests. This was compiled against the Main CVS on 30-Jun-2007. int main(int argc, char* argv[]) { boost::circular_buffer<int> cb(3); return 0; } A look at the m_it that is referenced (error log below) shows that it is private in when BOOST_CB_TEST is not defined. If I define this macro everything works as expected. #if !defined(BOOST_CB_TEST) private: #endif // #if !defined(BOOST_CB_TEST) // Member variables //! The circular buffer where the iterator points to. const Buff* m_buff; //! An internal iterator. pointer m_it; Any ideas? Thanks, Paul. 1>c:\sdk\boost\boost cvs\boost\boost\circular_buffer\debug.hpp(133) : error C2248: 'boost::cb_details::iterator<Buff,Traits>::m_it' : cannot access private member declared in class 'boost::cb_details::iterator<Buff,Traits>' 1> with 1> [ 1> Buff=boost::circular_buffer<int>, 1> Traits=boost::cb_details::nonconst_traits<std::allocator<int>> 1> ] 1> c:\sdk\boost\boost cvs\boost\boost\circular_buffer\details.hpp(231) : see declaration of 'boost::cb_details::iterator<Buff,Traits>::m_it' 1> with 1> [ 1> Buff=boost::circular_buffer<int>, 1> Traits=boost::cb_details::nonconst_traits<std::allocator<int>> 1> ] 1> c:\sdk\boost\boost cvs\boost\boost\circular_buffer\base.hpp(1950) : see reference to function template instantiation 'void boost::cb_details::debug_iterator_registry::invalidate_iterators<boost::cb_details::iterator<Buff,Traits>>(const Iterator &)' being compiled 1> with 1> [ 1> Buff=boost::circular_buffer<int>, 1> Traits=boost::cb_details::nonconst_traits<std::allocator<int>>, 1> Iterator=boost::cb_details::iterator<boost::circular_buffer<int>,boost::cb_details::nonconst_traits<std::allocator<int>>> 1> ] 1> c:\sdk\boost\boost cvs\boost\boost\circular_buffer\base.hpp(1947) : while compiling class template member function 'void boost::circular_buffer<T>::destroy_item(int *)' 1> with 1> [ 1> T=int 1> ] 1> i:\development\projects\test\test\main2.cpp(6) : see reference to class template instantiation 'boost::circular_buffer<T>' being compiled 1> with 1> [ 1> T=int 1> ] -- View this message in context: http://www.nabble.com/-circular_buffer--problem-compiling-in-VC80-tf4010271.... Sent from the Boost - Users mailing list archive at Nabble.com.
participants (1)
-
Paul O'Neill