Opened 9 years ago
Closed 9 years ago
#9215 closed Bugs (fixed)
Infinite loop when `any` constructor called for `const any&&`
Reported by: | Antony Polukhin | Owned by: | Antony Polukhin |
---|---|---|---|
Milestone: | Boost 1.55.0 | Component: | any |
Version: | Boost 1.54.0 | Severity: | Regression |
Keywords: | any const rvalue | Cc: |
Description
Code at line 70 in boost/any.hpp must look like this:
template<typename ValueType> any(ValueType&& value , typename boost::disable_if<boost::is_same<any&, ValueType> >::type* = 0 // disable if value has type `any&` , typename boost::disable_if<boost::is_const<ValueType> >::type* = 0) // disable if value has type `const ValueType&&` : content(new holder< typename remove_reference<ValueType>::type >(static_cast<ValueType&&>(value))) { }
Test case:
#include <boost/any.hpp> #include <string> const boost::any getBoolVal() { return false; } int main() { boost::any vals[] = {1.0, std::string("1m"), getBoolVal()}; }
Thanks to Bo Peng for finding this issue!
Change History (3)
comment:1 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 9 years ago
comment:3 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
(In [86213]) Fix for construction of
any
fromconst any&&
(refs #9215)