id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc
7950,"Eliminate W4-warnings under VS2005 - warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used",Peter Brockamp
,viboes,"Try this code snippet:
{{{
#include
#include // Including this causes the warnings
void ProvokeWarnings(void) {
boost::circular_buffer 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,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::set_capacity(__w64 unsigned int)'
test.cpp(5) : see reference to class template instantiation 'boost::circular_buffer' 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.",Patches,closed,Boost 1.55.0,circular_buffer,Boost 1.52.0,Cosmetic,fixed,warnings VS2005,