fork download
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. class friended1;
  5.  
  6. template<typename T>
  7. class test1
  8. {
  9. friend class friended1<T>;
  10. void print() const
  11. {
  12. std::cout << "test1" << std::endl;
  13. }
  14. };
  15.  
  16. template<typename T>
  17. class friended1
  18. {
  19. public:
  20. template<typename U>
  21. static void create()
  22. {
  23. test1<U>().print();
  24. }
  25. };
  26.  
  27. template<typename T>
  28. class friended2;
  29.  
  30. template<typename T>
  31. class test2
  32. {
  33. template<typename U>
  34. friend class friended2;
  35. void print() const
  36. {
  37. std::cout << "test2" << std::endl;
  38. }
  39. };
  40.  
  41. template<typename T>
  42. class friended2
  43. {
  44. public:
  45. template<typename U>
  46. static void create()
  47. {
  48. test2<U>().print();
  49. }
  50. };
  51.  
  52. int main()
  53. {
  54. friended1<int>::create<int>();
  55. //friended1<int>::create<double>();
  56. friended2<int>::create<int>();
  57. friended2<int>::create<double>();
  58. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
test1
test2
test2