[Boost-bugs] [Boost C++ Libraries] #7950: Eliminate W4-warnings under VS2005

Subject: [Boost-bugs] [Boost C++ Libraries] #7950: Eliminate W4-warnings under VS2005
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-01-29 14:21:42


#7950: Eliminate W4-warnings under VS2005
---------------------------------------------------------+------------------
 Reporter: Peter Brockamp <p.brockamp@…> | Owner: jano_gaspar
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: circular_buffer
  Version: Boost 1.52.0 | Severity: Optimization
 Keywords: warnings VS2005 |
---------------------------------------------------------+------------------
 Try this code snippet:

 {{{
 #include <boost/circular_buffer.hpp>
 #include <boost/date_time.hpp> // Including this causes the warnings

 void ProvokeWarnings(void) {
   boost::circular_buffer<int> Test(100);
   Test.set_capacity(500); // This provokes the warnings
 }
 }}}

 Compiling this with /W4 in VS2005 will give you a couple of warnings
 directed towards overloaded coma-operators. Overloading the coma-operator
 is done in several other libraries and some of them get pulled in to
 circular_buffer by including date_time.hpp:

 {{{
 \boost\circular_buffer\details.hpp(437) : warning C4913: user defined
 binary operator ',' exists but no overload could convert all operands,
 default built-in binary operator ',' used
 \boost\circular_buffer\base.hpp(863) : see reference to function template
 instantiation 'ForwardIterator
 boost::cb_details::uninitialized_copy_with_alloc<boost::cb_details::iterator<Buff,Traits>,int*,std::allocator<_Ty>>(InputIterator,InputIterator,ForwardIterator,Alloc
 &)' being compiled
 \boost\circular_buffer\base.hpp(856) : while compiling class template
 member function 'void boost::circular_buffer<T>::set_capacity(__w64
 unsigned int)'
 test.cpp(5) : see reference to class template instantiation
 'boost::circular_buffer<T>' being compiled
 1> with
 1> [
 1> T=int
 1> ]

 }}}

 Attached a patch which silences these warnings (this is done similarly in
 other boost libraries fiddling with the coma-operator, circular_buffer is
 more or less a victim of these warnings here).

 Probably it would be better to exclude these (obviously very special)
 overloads of operator ',' from the ADL in circular_buffer, but this will
 require changes to the libraries who overload the operator.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/7950>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:11 UTC