fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. template< typename t >
  5. struct named_value {
  6. t value;
  7. std::string name;
  8. };
  9.  
  10. template< typename t >
  11. void _( named_value< t > const &nv ) { // not a good name for a function
  12. std::cout << nv.name; // not a good semantic for a function
  13. }
  14.  
  15. template< typename t >
  16. std::ostream &operator<< ( std::ostream &s, named_value< t > const &v ) {
  17. return s << v.value;
  18. }
  19.  
  20. typedef named_value< int > named_int;
  21.  
  22. void print (named_int p)
  23. {
  24. _(p); std::cout << "=" << p;
  25. }
  26.  
  27. int main()
  28. {
  29. named_value< int > a = { 1, "a" }, b = { 2, "b" };
  30. _(a);
  31. std::cout << " = " << a;
  32. print(b);
  33. }
  34.  
Success #stdin #stdout 0.02s 2856KB
stdin
Standard input is empty
stdout
a = 1b=2