struct AZero { template <typename T> operator T() const {return 0;} template <typename T> operator std::complex<T>() const {return std::complex<T>(0, 0);} }; double val = AZero(); std::complex<float> valc1 = AZero(); std::complex<double> valc2 = AZero();
template <typename T> T GetAZero() {return 0;} template <typename T> std::complex<T> GetAZero<class std::complex<T>>() {return std::complex<T> (0, 0);}
Report message to a moderator