Given types From and To and
an expression E such that
decltype((E)) is add_rvalue_reference_t<From>,
convertible_to<From, To> requires E
to be both implicitly and explicitly convertible to type To.
The implicit and explicit conversions are required to produce equal
results.
Let FromR be add_rvalue_reference_t<From> and
test be the invented function:
To test(FromR (&f)()){return f();
}
and let f be a function with no arguments and return type FromR
such that f() is equality-preserving.
If FromR is an rvalue reference to a non const-qualified type, the
resulting state of the object referenced by f() after either above
expression is valid but unspecified ([lib.types.movedfrom]).