Opened 10 years ago
Closed 9 years ago
#7950 closed Patches (fixed)
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
| Reported by: | Owned by: | viboes | |
|---|---|---|---|
| Milestone: | Boost 1.55.0 | Component: | circular_buffer | 
| Version: | Boost 1.52.0 | Severity: | Cosmetic | 
| Keywords: | warnings VS2005 | Cc: | 
Description
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.
Attachments (1)
Change History (6)
by , 10 years ago
| Attachment: | details.hpp.diff added | 
|---|
comment:1 by , 9 years ago
| Type: | Bugs → Patches | 
|---|
comment:2 by , 9 years ago
| Owner: | changed from to | 
|---|---|
| Status: | new → assigned | 
comment:3 by , 9 years ago
| Severity: | Optimization → Cosmetic | 
|---|---|
| Summary: | Eliminate W4-warnings under VS2005 → 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 | 
comment:5 by , 9 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | assigned → closed | 


Silence warning C4913 under VS2005