
The intent is that in boost::is_convertible<From, To> From is now considered an rvalue (unless From is a (lvalue) reference type). This makes my test case happy. I can now move construct a unique_ptr with a move-only deleter.
Fwiw, this definition of is_convertible is consistent with std::is_convertible in N2800:
In order to instantiate the template is_convertible<From, To>, the following code shall be well formed:
template <class T> typename add_rvalue_reference<T>::type create(); To test() { return create<From>(); }
[ Note: This requirement gives well defined results for reference types, void types, array types, and function types. -- end note ]
I've got a much more refined unique_ptr testsuite on the way which will contain the unique_ptr header and test case for this (not there yet, I'll post when it is).
Howard, have you checked that this doesn't break any of the existing type_traits tests? If not can you let me have one (or more!) test cases for the problem so I can work on patching is_convertible here? Thanks, John.