id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 12652,boost::optional::operator= chooses wrong overload for {},mathias@…,Fernando Cacciola,"{{{ boost::optional op = 5; // creates engaged optional op = {}; // currently does op = 0; }}} For most types operator={} assigns from a value-constructed value of that type. That is the behavior of std::experimental::optional but not boost::optional. It chooses the T&& overload. I think the standard avoids it by having the assign-from-T operator= be templated on U instead, which doesn't match {}. ",Bugs,closed,Boost 1.63.0,optional,Boost 1.63.0,Problem,fixed,,