fork download
  1. #include <iostream>
  2. #include <complex>
  3. #include <type_traits>
  4.  
  5. using namespace std;
  6.  
  7. double get_real(double n) { return n; }
  8.  
  9. double get_real(const std::complex<double>& n) { return n.real(); }
  10.  
  11. template <typename T>
  12. std::complex<double> f(T n)
  13. {
  14. if (std::is_same<T, std::complex<double>>::value)
  15. return n * std::complex<double>{1, -1} + get_real(n);
  16. else
  17. return -n;
  18. }
  19.  
  20.  
  21. int main()
  22. {
  23. std::cout << f(std::complex<double>{10, 10}) << '\n';
  24. std::cout << f(10.0) << '\n';
  25. }
  26.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
(30,0)
(-10,0)