Given types From and To and
an expression E
whose type and value category are the same as those of declval<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.

```
template<class From, class To>
concept convertible_to =
is_convertible_v<From, To> &&
requires(add_rvalue_reference_t<From> (&f)()) {
static_cast<To>(f());
};
```

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.

Types From and To model convertible_to<From, To>
only if:

- FromR is not a reference-to-object type, or
- 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]).
- Otherwise, the object referred to by f() is not modified by either above expression.