Opened 11 years ago
Closed 9 years ago
#6742 closed Bugs (fixed)
C4789 warning using boost range on visual 2010
Reported by: | Owned by: | Neil Groves | |
---|---|---|---|
Milestone: | To Be Determined | Component: | range |
Version: | Boost 1.47.0 | Severity: | Problem |
Keywords: | range visual C4789 | Cc: |
Description
Hello,
I am compiling under Windows XP using Visual Studio 2010.
When I use boost::range, I have some strange compilation warning "warning C4789: destination of memory copy is too small".
Here is a small unit test that reproduces this warning:
#define BOOST_TEST_MODULE boost_range_c4789_test #include <boost/phoenix/core.hpp> #include <boost/phoenix/operator.hpp> #include <boost/range.hpp> #include <boost/range/adaptors.hpp> #include <boost/range/algorithm.hpp> #include <boost/range/algorithm_ext.hpp> #include <boost/test/unit_test.hpp> #include <vector> /** \deftestgroup{boost_range_c4789_test} \brief Test a spurious C4789 MSVC warning that happens with boost range @{ **/ struct FooType { double a,b; }; //----------------------------------------------------------------------------- /** \testdesc The actual test **/ BOOST_AUTO_TEST_CASE( boost_range_c4789_bug ) { using namespace boost::phoenix::arg_names; using namespace boost::adaptors; FooType foo; foo.a = 2.; foo.b = -4.; size_t numelem = 10; std::vector<FooType> foovec(numelem,foo); std::vector<double> barvec; boost::push_back( barvec, foovec | transformed( (&arg1)->*& FooType::a ) ); BOOST_CHECK( barvec == std::vector<double>(numelem,foo.a) ); } ///@}
Thanks for your help,
Benjamin.
Change History (2)
comment:1 by , 9 years ago
Status: | new → assigned |
---|
comment:2 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Other fixes appear to have solved this issue. A test case has been added and this compiles cleanly on all platforms available to me (linux with GCC / Clang and OS-X Clang).