Listing 4
template<typename Rep>
class concat_string
{
private:
Rep data_;
private:
concat_string();
concat_string &operator=(concat_string const &);
public:
typedef Rep value_type;
concat_string(Rep const &data) : data_(data){ }
Rep const &data() const { return data_; }
template<typename C, typename T, typename A>
operator std::basic_string<C, T, A>() const
{
std::basic_string<C, T, A> data;
data.reserve(length(data_));
appender<std::basic_string<C, T, A> > append(data);
append(data_);
return data;
}
};