Boost logo

Boost :

From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-03-06 16:40:18


>From: "Beman Dawes" <bdawes_at_[hidden]>

> At 05:58 PM 3/5/2003, Robert Klarer wrote:
>
> >The purpose of the static_string library is to offer an alternative to
> >string literals and the standard type const std::string. A
> >static_string uses no dynamically allocated memory, and is more
> >efficient at execution time than either string literals or
> >basic_strings.
>
> Yes, agreed. That would be useful. IIRC, the C++ committee's performance
> working groups has talked about such a string in the past.
>
> There are questions that come to mind:
>
> * Can you come up with a small, workable language extension that eases
> those problems?

Josuttis/Vandevoorde mentions being able to pass string literals as template
parameters as a possible future extension. That would be a clean way to
handle it. Possibly could there also be a general solution regarding passing
compound values. At the moment, values of class type can't be passed as
template parameters.

> * Can you come up with an alternate design that gives up a tiny bit of
> efficiency (one pointer indirection perhaps) but then allows reasonable
> construction and internationalization?

If run-time computation is ok, and that one only wants to avoid dynamical
allocation, then one might do something like I used in another posting in
this thread:

template<class CharType, int N>
class fixed_size_string;

template<class CharType, int N1, int N2>
fixed_size_string<CharType, N1+N2> operator+(const
fixed_size_string<CharType, N1> &s1, const fixed_size_string<CharType, N2>
&s2);

etc.

Regards,

Terje


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk