real(E),
if T is not an arithmetic type and
the expression real(E) is valid,
with overload resolution performed in a context that includes the declaration
template<class U> U real(const U&)=delete;
If the function selected by overload resolution
does not return the real part of its input,
the program is ill-formed, no diagnostic required;