template<class From, class To>
concept ConvertibleTo =
is_convertible_v<From, To> &&
requires(From (&f)()) {
static_cast<To>(f());
};
To test(From (&f)()) { return f(); }and let f be a function with no arguments and return type From such that f() is equality-preserving.