// @topic T53205 12/04/2012 -- class template, function template demo // @brief template class Box, template function max_val( ) #include <string> // Example of a class template -- // Box is a placeholder of some data: template< typename ValueType > class Box { ValueType m_value; public: // conversion constructor Box<ValueType>( ValueType value ) : m_value( value ) { } // copy constructor Box<ValueType>( Box<ValueType> const& other ) : m_value( other.m_value ) { } // operations ValueType get_value() { return m_value; } ValueType get_default_value() { return ValueType(); } void set_value( ValueType value ); };//class Box // Example of a member function of the class template: template< typename ValueType > void Box< ValueType >::set_value( ValueType value ) { m_value = value; } // Example of a function template -- // Returns bigger ValueT template< typename ValueT > ValueT const& max_val( ValueT const& a, ValueT const& b ) { return ( a > b ) ? a : b; } int main() { std::string str = "hello"; Box< double > dbl_bx = 123.45; double dbl = dbl_bx.get_value(); dbl_bx.get_default_value(); Box< std::string > str_bx = ""; str_bx.set_value( str ); Box< std::string > str_bx2 = str_bx; Box< int > int_bx = 789; int xx = int_bx.get_value(); int max = max_val( 100, 200 ); return 0; }