Boost logo

Boost :

From: Jonathan Wakely (cow_at_[hidden])
Date: 2004-09-28 11:50:35


On Tue, Sep 28, 2004 at 12:01:27PM -0400, Gennadiy Rozental wrote:

> Hi,
>
> Looks like subject test fails at runtime on following line:
>
> std::list<char> l;
>
> // here I populate l;
>
> std::string s;
>
> s.assign( l.begin(), l.end() ); // <---------- HERE
>
> Funny things is that it start working if I change list to vector.
>
> Is this some kind of gcc STL bug?

Should work fine - I take it you've simplified that code?

This one http://tinyurl.com/3qdld (GCC 2.95) fails simply because
std::string::clear() is missing in libstdc++-v2, you must use
s.erase(s.begin(), s.end())

For GCC 3.4.x the debug mode reports this:
error: attempt to copy-construct an iterator from a singular iterator.

Are you sure you're passing l.end(), or is that a simplification?

Loads of iterators in token_iterator_test.cpp are singular, so when
passed to BOOST_CHECK_EQUAL_COLLECTIONS (which takes it's args by value)
a singular iterator is copied - which is illegal
e.g.
test_custom_compare()

Also, why is test_wide() commented out for GCC (without STLPort) ?
I thought the point of the \nnn octal escapes I worked out was that GCC
won't accept the raw characters, but is happy with the escapes?
Did that not work? Why should it work with STLPort, it's the compiler
that rejects those chars, not the stdlib, isn't it?
And it wasn't all versions of GCC that were affected, was it?

jon

-- 
"You should know that so far as Buddha-nature is concerned,
 there is no difference between an enlightened man and 
 an ignorant one. What makes the difference is that one
 realizes it, while the other is ignorant of it."
	- Sutra of Wei-Lang

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