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 T> T real(const T&)=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;