fork(3) download
  1. #include <iostream>
  2. #include <string>
  3. #include <complex>
  4. #include <type_traits>
  5.  
  6. template <class T>
  7. struct is_complex : std::false_type {};
  8.  
  9. template <class T>
  10. struct is_complex<std::complex<T>> : std::true_type {};
  11.  
  12. template<class T>
  13. class cc {
  14. public:
  15.  
  16. template <class TT = T>
  17. typename std::enable_if<!is_complex<TT>::value>::type foo() {
  18. std::cout << "default " << v << std::endl ;
  19. }
  20.  
  21. template <class TT = T>
  22. typename std::enable_if<is_complex<TT>::value>::type foo() {
  23. std::cout << "complex t " << v << std::endl ;
  24. }
  25.  
  26. T v ;
  27. };
  28.  
  29. int main()
  30. {
  31. cc< std::complex<double> > r ;
  32. cc<double> r2 ;
  33.  
  34. r.foo() ;
  35. r2.foo() ;
  36. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
complex t (0,0)
default 0