boost optional assignment

The following code gives me compilation error. With const reference it's ok. Is it right behaviour? #include <boost/optional.hpp> #include <boost/shared_ptr.hpp> struct foo{ // foo(int const& of) good foo(int& of) // error {} }; int main(){ boost::shared_ptr<int> ptr; boost::optional<foo> opt; opt = *ptr; }

On Fri, Aug 17, 2012 at 4:35 AM, tolik levchik <endight@gmail.com> wrote:
The following code gives me compilation error. With const reference it's ok. Is it right behaviour?
Tolik, I've never tried to pass a mutable reference into an object's copy constructor (and furthermore I cannot imagine a reason to). Nevertheless, on my machine (boost 1.48, gcc 4.5.3) this works: // opt = *ptr; // error opt.reset(*ptr); // good I'm not sure why one works while the other doesn't as they both appear to be declared the same: optional& operator= ( argument_type val ) { this->assign( val ) ; return *this ; } void reset ( argument_type val ) { assign(val); } Chris
participants (2)
-
Chris Stankevitz
-
tolik levchik