fork download
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. void print (T i)
  5. {
  6. std::cout << "simple" << std::endl;
  7. }
  8. template <template<typename> class FF, typename TT>
  9. void print (FF<TT> i)
  10. {
  11. std::cout << "template" << std::endl;
  12. }
  13.  
  14. template <>
  15. void print<int>(int i)
  16. {
  17. std::cout << "int" << std::endl;
  18. }
  19.  
  20.  
  21. template <typename T>
  22. struct R
  23. {
  24. T x;
  25. };
  26.  
  27. int main()
  28. {
  29. R<int> r;
  30. print<int>(1.1); // ok, prints int
  31. print(1.1); // ok, prints simple
  32. print<int>(1); // ok, prints int
  33. print(1); // ok, prints int
  34. print(r); // ok, prints template
  35. print< R<int> >(r); // ?? why simple ??
  36. print< R,int >(r); // ?? why simple ??
  37. // gcc 4.6.2 (-std=c++0x) and 4.8.1 (-std=c++11)
  38. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
int
simple
int
int
template
simple
template