Listing 1

template< . . . >
class fast_string_concatenator
{
public:
  typedef S                                 string_type;
  typedef C                                 char_type;
  typedef T                                 traits_type;
  typedef fast_string_concatenator<S, C, T> class_type;
// Construction
public:
  fast_string_concatenator(string_type const &lhs, string_type const &rhs);
  fast_string_concatenator(string_type const &lhs, char_type const *rhs);
  fast_string_concatenator(string_type const &lhs, char_type const rhs);
  fast_string_concatenator(char_type const *lhs, string_type const &rhs);
  fast_string_concatenator(char_type const lhs, string_type const &rhs);

  fast_string_concatenator(class_type const &lhs, string_type const &rhs);
  fast_string_concatenator(class_type const &lhs, char_type const *rhs);
  fast_string_concatenator(class_type const &lhs, char_type const rhs);
// Conversion
public:
  operator string_type() const;
  . . .
};