id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 2319,"function::operator= should ""move"", copy assignment should have by-value argument",niels_dekker,Douglas Gregor,"A few days ago, I added a comment to ticket #1910 (regarding function::swap), suggesting to have boost::function's assignment operators calling its new ''move_assign'' member function, instead of calling ''swap''. Doing so would significantly improve its performance. Now I think that function::operator= deserves its own ticket, especially because the ''copy assignment'' of boost::function can be improved even more, by having its argument passed ''by value'', instead of creating a copy of the argument inside the body of the function. Doing so would allow the compiler to do copy elision, when its argument is an rvalue. See also [http://lists.boost.org/Archives/boost/2008/09/142106.php Improving the assignment operators of various Boost types] So please consider the attached patch. ",Bugs,new,Boost 1.37.0,function,Boost 1.36.0,Optimization,,,niels_dekker