Boost logo

Boost :

From: Jeff Garland (jeff_at_[hidden])
Date: 2006-07-06 02:34:35


David Abrahams wrote:
> Jeff Garland <jeff_at_[hidden]> writes:
>

>> I guess I have yet to be convinced of the supposed disadvantages.
>> super_string is just as extensible as basic_string.
>
> Only sort of. Noninvasive extensions are relegated to "second class"
> syntax.

I stand by my original statement: 'super_string is just as extensible as
basic_string'. Your comment applies to basic_string as much as super_string.
  Although I guess there's really nothing stopping someone from deriving from
super_string and adding their own nifty functions -- as long as they're stateless.

Still, I don't see how the current alternative of having "second class" syntax
for all advanced string code is better? And C++ programmers have to deal with
the fact that some code may be written in an 'object style' and some in a pure
functional style -- that's just life as a C++ programmer.

>> No, I got it, but I don't know what to do with it. Python chose to leave it
>> out of the string class -- Java chose to provide a simplified interface(just
>> to be clear, there's a Pattern class in JAVA that works with
>> string).
>
> Python also has a pattern class that works with string.
>
> python -c "import re; help(re.compile(''))"
>
> What point are you making here?

I'm just clarifying that in Java all the 'Regex functionality' isn't all
embedded in the String class -- but there is a relation between the two.
super_string is very similar to the JavaString in that respect.

>> In Perl it's helped along by language features, but it's essentially
>> built-in using operators.
>
> Most operators in C++ can be implemented as free functions.

I realize -- and perhaps something could be done to emulate a perl-like
syntax. But I think there's plenty of people that would be against that idea
as enabling even more obscure code -- me among them. I'm open to being
convinced, but I think clear function names will end up being superior.

>> Overall though, I didn't see the motivation for leaving Regex out if
>> I'm going to add other functions to the string type.
>
> Well, you have to stop somewhere. Regex might be a good place because
> it represents a rather large, complicated, and rather different batch
> of functionality from the rest of what one gets from string. And it
> draws in dependencies that not everyone needs.
>
>> There's no user cost if they don't use Regex other then processing
>> of a few extra includes on compile.
>
> Linking with more libraries, perhaps?

Nope. basic_superstring is a template, so if you never call a *_regex
function you won't need to link in the regex library -- it's a header only
dependency. If this weren't the case, I'd agree with you.

Jeff


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