fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. //Forward declarations
  6. template< typename T >
  7. class Container;
  8. template< typename T, typename charT, typename traits >
  9. basic_ostream< charT, traits >&
  10. operator<<( basic_ostream< charT, traits >& out,
  11. const Container< T >& a_container );
  12.  
  13. //Definitions
  14. template< typename T >
  15. class Container
  16. {
  17. public:
  18. Container( T a_value ): value( a_value ){}
  19.  
  20. private:
  21. T value;
  22.  
  23. template< typename S, typename charT, typename traits >
  24. friend basic_ostream< charT, traits >&
  25. operator<<( basic_ostream< charT, traits >& out,
  26. const Container< S >& a_container );
  27. };
  28.  
  29. template< typename T, typename charT, typename traits >
  30. basic_ostream< charT, traits >&
  31. operator<<( basic_ostream< charT, traits >& out,
  32. const Container< T >& a_container )
  33. {
  34. out << a_container.value;
  35. return out;
  36. }
  37.  
  38. //Main
  39. int main( void )
  40. {
  41. Container< int > my_container( 42 );
  42.  
  43. cout << my_container;
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
42