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