Boost logo

Boost :

From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2008-04-04 04:00:14

Mat Marcus skrev:
> On Wed, Apr 2, 2008 at 2:54 PM, Thorsten Ottosen
> <thorsten.ottosen_at_[hidden]> wrote:
>> Mat Marcus skrev:
>>> In 1.34.1 we rely on boost::range::begin/end for const char* . That is
>>> we can invoke something like:
>>> const char* range= "foo";
>>> std::copy(boost::begin(range), boost::end(range), result);
>>> In 1.35.0, under MSVC 9.0, code similar to the above. Are there known
>>> issues with range::end(const char*) in 1.35.0 (e.g. no longer
>>> supported), or do I need to explore further?
>> There are a number of changes to boost.range. I guess they should be
>> written in the "updated libraries" section of the announcement. Is
>> it still possible to update that section, Beman?
>> -Thorsten
> Could you please say a bit more about the rationale for the 1.35
> changes? I have been unable to use the 1.35.0 version of
> boost::begin/end/size on ranges due to failures of the type
> calulcation metacode. Instead I've replaced a number of instances of
> boost::size(some_range) with std::distance(boost::begin(some_range),
> boost::end(some_range)), since the use of - operationstogether with
> the current versions of begin/end causes deduction failures, etc.

First, let me enumerate the changes:

1. no default support for null-terminated char pointers

2. boost::end( T (&array)[N] ) always return array + N, also for string

(these behaviors should be got by using as_literal())

3. boost_range_begin() is renamed range_begin(), and similar for

4. boost::size() requires random access and is guaranteed O(1),
boost::distance() has the old behavior

5. There is also some new naming of the metafunctions, but see the docs
for how it is


Boost list run by bdawes at, gregod at, cpdaniel at, john at