id summary reporter owner description type status milestone component version severity resolution keywords cc 12802 optional is broken in 1.63 pal666@… Fernando Cacciola "{{{ boost::optional > o; o = 1; }}} gcc says error: no match for 'operator=' (operand types are 'boost::optional >' and 'int') i found the reason for failure: is_convertible_to_T_or_factory checks is_constructinble, which means , U'''&&'''>, while recursive wrapper specializes only ,T> (no '''&&''') as true and ,U> (catches U=T'''&&''') as false i don't know who is wrong - recursive_wrapper or optional it can be fixed either by adding {{{ template struct is_constructible < recursive_wrapper < T>, T &&> : boost::true_type{}; }}} to recursive_wrapper or by changing boost::is_constructible to boost::is_constructible in is_convertible_to_T_or_factory " Bugs new To Be Determined optional Boost 1.63.0 Regression