This patch properly constrains the converting assignment operator in C++03. It also fixes a bug where std::forward was given the wrong type.
The following two tests begin passing in C++03:
- unique_ptr.single.asgn/move_convert.pass.cpp
- unique_ptr.single.asgn/move_convert13.fail.cpp