fork download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. struct A
  5. {
  6. static const char funnyName[];
  7. };
  8.  
  9. const char A::funnyName[] = "AaAaA";
  10.  
  11. struct B : A
  12. {
  13. static const char funnyName[];
  14. };
  15.  
  16. const char B::funnyName[] = "bBbBb";
  17.  
  18. template <typename T>
  19. std::string GetFunnyName(T&&)
  20. {
  21. return std::remove_reference<T>::type::funnyName;
  22. }
  23.  
  24. int main()
  25. {
  26. A* a = new A();
  27. A* b = new B();
  28.  
  29. std::cout
  30. << GetFunnyName(*a) << std::endl
  31. << GetFunnyName(*b) << std::endl;
  32. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
AaAaA
AaAaA