fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5.  
  6.  
  7. template<typename T>
  8. struct serialize_helper
  9. {
  10. };
  11.  
  12. template<>
  13. struct serialize_helper<std::string>
  14. {
  15. static void apply(const std::string& s, std::ofstream& res)
  16. {
  17. std::cout << s << std::endl;
  18. }
  19. };
  20.  
  21.  
  22. template<typename T>
  23. void serializer(const T& t, std::ofstream& res)
  24. {
  25. serialize_helper<T>::apply(t, res);
  26. }
  27.  
  28. template<typename T>
  29. void serializer(T* t, std::ofstream& res)
  30. {
  31. serialize_helper<T>::apply(*t, res);
  32. }
  33.  
  34. int main()
  35. {
  36. std::ofstream res;
  37. std::string s("reference");
  38. serializer(s, res);
  39.  
  40. std::string* ps = new std::string("pointer");
  41. serializer(ps, res);
  42. delete ps;
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
reference
pointer