public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator
@ 2004-05-19 12:25 bangerth at dealii dot org
  2004-05-19 13:00 ` [Bug libstdc++/15523] " pinskia at gcc dot gnu dot org
                   ` (13 more replies)
  0 siblings, 14 replies; 21+ messages in thread
From: bangerth at dealii dot org @ 2004-05-19 12:25 UTC (permalink / raw)
  To: gcc-bugs

I definitely like the debug mode in libstdc++, but happened to fall over this: 
----------------- 
#include <vector> 
 
int main () 
{ 
  std::vector<std::vector<int>::const_iterator> x(2); 
} 
----------------- 
 
When compiled with -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC, I got this: 
 
homes/csm2/bangerth/bin/gcc-3.4.0/bin/../lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0/debug/safe_iterator.h:125: 
    error: attempt to copy-construct an iterator from a singular iterator. 
 
Objects involved in the operation: 
iterator "this" @ 0x0x8067ee0 { 
type = 
N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
(constant iterator); 
  state = singular; 
} 
iterator "other" @ 0x0xbfffdd40 { 
type = 
N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
(constant iterator); 
  state = singular; 
} 
 
 
For some reason, I fail to see why I shouldn't be allowed to copy-construct from an 
invalid iterator. After all, the result would still be invalid and couldn't be dereferenced, no? 
I think this should be allowed. 
 
W.

-- 
           Summary: Can't have vectors of vector::const_iterator
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bangerth at dealii dot org
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
@ 2004-05-19 13:00 ` pinskia at gcc dot gnu dot org
  2004-05-19 22:58 ` [Bug libstdc++/15523] New: " llewelly
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-19 13:00 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-05-18 20:36 -------
Even this one fails:
#include <vector>

int main ()
{
  std::vector<std::vector<int>::iterator> x(2);
}

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
  2004-05-19 13:00 ` [Bug libstdc++/15523] " pinskia at gcc dot gnu dot org
@ 2004-05-19 22:58 ` llewelly
  2004-05-19 23:07 ` [Bug libstdc++/15523] " llewelly at xmission dot com
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: llewelly @ 2004-05-19 22:58 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:

> I definitely like the debug mode in libstdc++, but happened to fall over this: 
> ----------------- 
> #include <vector> 
>  
> int main () 
> { 
>   std::vector<std::vector<int>::const_iterator> x(2); 
> } 
> ----------------- 
>  
> When compiled with -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC, I got this: 
>  
> homes/csm2/bangerth/bin/gcc-3.4.0/bin/../lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0/debug/safe_iterator.h:125: 
>     error: attempt to copy-construct an iterator from a singular iterator. 
>  
> Objects involved in the operation: 
> iterator "this" @ 0x0x8067ee0 { 
> type = 
> N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
> (constant iterator); 
>   state = singular; 
> } 
> iterator "other" @ 0x0xbfffdd40 { 
> type = 
> N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
> (constant iterator); 
>   state = singular; 
> } 
>  
>  
> For some reason, I fail to see why I shouldn't be allowed to copy-construct from an 
> invalid iterator. After all, the result would still be invalid and
> couldn't be dereferenced, no?

Copying an invalid iterator is undefined behavior. 24.1/5 .

> I think this should be allowed. 

Is there a gcc target where (a) loading an invalid address into an
    address register causes a hardware fault, and (b) copy
    constructing an invalid iterator might require such a load?


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
  2004-05-19 13:00 ` [Bug libstdc++/15523] " pinskia at gcc dot gnu dot org
  2004-05-19 22:58 ` [Bug libstdc++/15523] New: " llewelly
@ 2004-05-19 23:07 ` llewelly at xmission dot com
  2004-05-20 15:16 ` bangerth at dealii dot org
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: llewelly at xmission dot com @ 2004-05-19 23:07 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From llewelly at xmission dot com  2004-05-19 05:11 -------
Subject: Re:  New: Can't have vectors of vector::const_iterator

"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:

> I definitely like the debug mode in libstdc++, but happened to fall over this: 
> ----------------- 
> #include <vector> 
>  
> int main () 
> { 
>   std::vector<std::vector<int>::const_iterator> x(2); 
> } 
> ----------------- 
>  
> When compiled with -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC, I got this: 
>  
> homes/csm2/bangerth/bin/gcc-3.4.0/bin/../lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0/debug/safe_iterator.h:125: 
>     error: attempt to copy-construct an iterator from a singular iterator. 
>  
> Objects involved in the operation: 
> iterator "this" @ 0x0x8067ee0 { 
> type = 
> N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
> (constant iterator); 
>   state = singular; 
> } 
> iterator "other" @ 0x0xbfffdd40 { 
> type = 
> N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKiN10__gnu_norm6vectorIiSaIiEEEEEN15__gnu_debug_def6vectorIiS7_EEEE 
> (constant iterator); 
>   state = singular; 
> } 
>  
>  
> For some reason, I fail to see why I shouldn't be allowed to copy-construct from an 
> invalid iterator. After all, the result would still be invalid and
> couldn't be dereferenced, no?

Copying an invalid iterator is undefined behavior. 24.1/5 .

> I think this should be allowed. 

Is there a gcc target where (a) loading an invalid address into an
    address register causes a hardware fault, and (b) copy
    constructing an invalid iterator might require such a load?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (2 preceding siblings ...)
  2004-05-19 23:07 ` [Bug libstdc++/15523] " llewelly at xmission dot com
@ 2004-05-20 15:16 ` bangerth at dealii dot org
  2004-05-20 18:43   ` llewelly
  2004-05-20 18:43 ` bangerth at ices dot utexas dot edu
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 21+ messages in thread
From: bangerth at dealii dot org @ 2004-05-20 15:16 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From bangerth at dealii dot org  2004-05-19 14:24 -------
I see your point, although 24.1/5 only speaks about "most operations" and 
does not specifically rule out that we do the sensible thing here. I 
think my point is that I fail to see the value of this check, since it 
seems to be allowed to create such an iterator, but not to copy it. On 
the other hand, if we simply omitted the check we would fall over later 
if we ever tried to dereference it. The only thing that one would have 
to make sure is that the result of assigning a singular iterator to 
another iterator is again a singular iterator, but that should be what 
happens anyway if we simply copy all member variables. 
 
I don't feel strongly either way, since I already fixed my code to 
work around this, but I do feel that there are cases where one would 
like to generate a vector of singular iterators, and only after that 
assign individual values to them. 
 
W. 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (3 preceding siblings ...)
  2004-05-20 15:16 ` bangerth at dealii dot org
@ 2004-05-20 18:43 ` bangerth at ices dot utexas dot edu
  2004-05-20 18:43   ` llewelly
  2004-05-20 18:43 ` sebor at roguewave dot com
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 21+ messages in thread
From: bangerth at ices dot utexas dot edu @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From bangerth at ices dot utexas dot edu  2004-05-19 17:39 -------
Subject: Re:  Can't have vectors of vector::const_iterator


> I think in most cases it would be sufficient to create an empty
>     vector, set it its vector<>::capacity(), and then push_back() new
>     values into it.

That's exactly what I ended up doing in our code.


> My naive expectation would be that -D_GLIBCXX_DEBUG_PEDANTIC would
>     cause an abort() for all dectectable undefined behavior. I think
>     most other users would expect this as well, *but* many probably
>     don't realize this extends to aborting on the copy of a singular
>     iterator, much less to aborting on the creation of the vector full
>     of singular iterators. OTOH, some users expect implementations to
>     report errors they don't know about.

As I said, I don't feel strongly way, I'm just confused because I don't see a 
reaonsing behind this particular check. What harm does it do to copy an 
object that you will not be allowed to use anyway? Since the standard says 
that behavior is undefined, we have some leeway in implementing sensible 
behavior, in particular since we know that this can never hurt anyone.

But I'm fine if we decide that this is NAD and that we should close this PR. 
Please feel free to do so if you want.

W.

-------------------------------------------------------------------------
Wolfgang Bangerth              email:            bangerth@ices.utexas.edu
                               www: http://www.ices.utexas.edu/~bangerth/



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-20 15:16 ` bangerth at dealii dot org
@ 2004-05-20 18:43   ` llewelly
  0 siblings, 0 replies; 21+ messages in thread
From: llewelly @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From bangerth at dealii dot org  2004-05-19 14:24 -------
> I see your point, although 24.1/5 only speaks about "most operations" and 
> does not specifically rule out that we do the sensible thing here. I 
> think my point is that I fail to see the value of this check, since it 
> seems to be allowed to create such an iterator, but not to copy it. On 
> the other hand, if we simply omitted the check we would fall over later 
> if we ever tried to dereference it. The only thing that one would have 
> to make sure is that the result of assigning a singular iterator to 
> another iterator is again a singular iterator, but that should be what 
> happens anyway if we simply copy all member variables. 
>  
> I don't feel strongly either way, since I already fixed my code to 
> work around this, but I do feel that there are cases where one would 
> like to generate a vector of singular iterators, and only after that 
> assign individual values to them. 

The obvious answer is that if one can't initialize a vector of
    iterators to the 'right' value, one should initialize them to the
    null iterator. :-) (I know, pointers are the only iterators for
    which such a value exists.)

I think in most cases it would be sufficient to create an empty
    vector, set it its vector<>::capacity(), and then push_back() new
    values into it.

My naive expectation would be that -D_GLIBCXX_DEBUG_PEDANTIC would
    cause an abort() for all dectectable undefined behavior. I think
    most other users would expect this as well, *but* many probably
    don't realize this extends to aborting on the copy of a singular
    iterator, much less to aborting on the creation of the vector full
    of singular iterators. OTOH, some users expect implementations to
    report errors they don't know about.
    


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (6 preceding siblings ...)
  2004-05-20 18:43 ` llewelly at xmission dot com
@ 2004-05-20 18:43 ` llewelly at xmission dot com
  2004-05-20 19:27 ` bangerth at ices dot utexas dot edu
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: llewelly at xmission dot com @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From llewelly at xmission dot com  2004-05-19 17:32 -------
Subject: Re:  Can't have vectors of vector::const_iterator

"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From bangerth at dealii dot org  2004-05-19 14:24 -------
> I see your point, although 24.1/5 only speaks about "most operations" and 
> does not specifically rule out that we do the sensible thing here. I 
> think my point is that I fail to see the value of this check, since it 
> seems to be allowed to create such an iterator, but not to copy it. On 
> the other hand, if we simply omitted the check we would fall over later 
> if we ever tried to dereference it. The only thing that one would have 
> to make sure is that the result of assigning a singular iterator to 
> another iterator is again a singular iterator, but that should be what 
> happens anyway if we simply copy all member variables. 
>  
> I don't feel strongly either way, since I already fixed my code to 
> work around this, but I do feel that there are cases where one would 
> like to generate a vector of singular iterators, and only after that 
> assign individual values to them. 

The obvious answer is that if one can't initialize a vector of
    iterators to the 'right' value, one should initialize them to the
    null iterator. :-) (I know, pointers are the only iterators for
    which such a value exists.)

I think in most cases it would be sufficient to create an empty
    vector, set it its vector<>::capacity(), and then push_back() new
    values into it.

My naive expectation would be that -D_GLIBCXX_DEBUG_PEDANTIC would
    cause an abort() for all dectectable undefined behavior. I think
    most other users would expect this as well, *but* many probably
    don't realize this extends to aborting on the copy of a singular
    iterator, much less to aborting on the creation of the vector full
    of singular iterators. OTOH, some users expect implementations to
    report errors they don't know about.
    


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (5 preceding siblings ...)
  2004-05-20 18:43 ` sebor at roguewave dot com
@ 2004-05-20 18:43 ` llewelly at xmission dot com
  2004-05-20 18:43 ` llewelly at xmission dot com
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: llewelly at xmission dot com @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From llewelly at xmission dot com  2004-05-19 18:22 -------
Subject: Re:  Can't have vectors of vector::const_iterator

"bangerth at ices dot utexas dot edu" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From bangerth at ices dot utexas dot edu  2004-05-19 17:39 -------
> Subject: Re:  Can't have vectors of vector::const_iterator
> 
> 
> > I think in most cases it would be sufficient to create an empty
> >     vector, set it its vector<>::capacity(), and then push_back() new
> >     values into it.
> 
> That's exactly what I ended up doing in our code.
> 
> 
> > My naive expectation would be that -D_GLIBCXX_DEBUG_PEDANTIC would
> >     cause an abort() for all dectectable undefined behavior. I think
> >     most other users would expect this as well, *but* many probably
> >     don't realize this extends to aborting on the copy of a singular
> >     iterator, much less to aborting on the creation of the vector full
> >     of singular iterators. OTOH, some users expect implementations to
> >     report errors they don't know about.
> 
> As I said, I don't feel strongly way, I'm just confused because I don't see a 
> reaonsing behind this particular check. What harm does it do to copy an 
> object that you will not be allowed to use anyway?

I can only speculate as to the reasoning behind the check, but the
    example is undefined behavior. The check prevents an unsuspecting
    user from writing code which may misbehave on another
    implementation. 

In theory, such code may not be portable to other implementations. In
    practice, I don't know of an implementation in which copying an
    invalid iterator is a significant problem. But then, I mostly only
    use libstdc++ . :-)

I don't really know how far libstdc++ should go in emitting errors for
    non-conforming code. I did expect -D_GLIBCXX_DEBUG_PEDANTIC to
    cause that abort, and mildly prefer that it continue to do so, but
    I don't know how other users would react to it.

> Since the standard says 
> that behavior is undefined, we have some leeway in implementing sensible 
> behavior, in particular since we know that this can never hurt
> anyone.

I don't see this as being about whether gcc can implement sensible
    behavior for this case. My question is, should libstdc++ emit an
    error for this case, because some *other* implementation may not
    implement a sensible behavior for this case? The safe answer seems
    to be yes, but if nobody knows of an implementation where copying
    invalid pointers or iterators has bad behavior, maybe it's just
    paranoia. 

> 
> But I'm fine if we decide that this is NAD and that we should close this PR. 
> Please feel free to do so if you want.

I'm just an overly talkative observer. I don't close bugs. :-)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (4 preceding siblings ...)
  2004-05-20 18:43 ` bangerth at ices dot utexas dot edu
@ 2004-05-20 18:43 ` sebor at roguewave dot com
  2004-05-21  6:17   ` llewelly
  2004-05-20 18:43 ` llewelly at xmission dot com
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 21+ messages in thread
From: sebor at roguewave dot com @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From sebor at roguewave dot com  2004-05-19 18:04 -------
Subject: Re:  Can't have vectors of vector::const_iterator

FWIW, library issue 408 deals with something similar:
vector<reverse_iterator<char*> >

http://www.open-std.org/jtc1/sc22/wg21/prot/14882fdis/n1635.html#408

Martin



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-20 18:43 ` bangerth at ices dot utexas dot edu
@ 2004-05-20 18:43   ` llewelly
  0 siblings, 0 replies; 21+ messages in thread
From: llewelly @ 2004-05-20 18:43 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

"bangerth at ices dot utexas dot edu" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From bangerth at ices dot utexas dot edu  2004-05-19 17:39 -------
> Subject: Re:  Can't have vectors of vector::const_iterator
> 
> 
> > I think in most cases it would be sufficient to create an empty
> >     vector, set it its vector<>::capacity(), and then push_back() new
> >     values into it.
> 
> That's exactly what I ended up doing in our code.
> 
> 
> > My naive expectation would be that -D_GLIBCXX_DEBUG_PEDANTIC would
> >     cause an abort() for all dectectable undefined behavior. I think
> >     most other users would expect this as well, *but* many probably
> >     don't realize this extends to aborting on the copy of a singular
> >     iterator, much less to aborting on the creation of the vector full
> >     of singular iterators. OTOH, some users expect implementations to
> >     report errors they don't know about.
> 
> As I said, I don't feel strongly way, I'm just confused because I don't see a 
> reaonsing behind this particular check. What harm does it do to copy an 
> object that you will not be allowed to use anyway?

I can only speculate as to the reasoning behind the check, but the
    example is undefined behavior. The check prevents an unsuspecting
    user from writing code which may misbehave on another
    implementation. 

In theory, such code may not be portable to other implementations. In
    practice, I don't know of an implementation in which copying an
    invalid iterator is a significant problem. But then, I mostly only
    use libstdc++ . :-)

I don't really know how far libstdc++ should go in emitting errors for
    non-conforming code. I did expect -D_GLIBCXX_DEBUG_PEDANTIC to
    cause that abort, and mildly prefer that it continue to do so, but
    I don't know how other users would react to it.

> Since the standard says 
> that behavior is undefined, we have some leeway in implementing sensible 
> behavior, in particular since we know that this can never hurt
> anyone.

I don't see this as being about whether gcc can implement sensible
    behavior for this case. My question is, should libstdc++ emit an
    error for this case, because some *other* implementation may not
    implement a sensible behavior for this case? The safe answer seems
    to be yes, but if nobody knows of an implementation where copying
    invalid pointers or iterators has bad behavior, maybe it's just
    paranoia. 

> 
> But I'm fine if we decide that this is NAD and that we should close this PR. 
> Please feel free to do so if you want.

I'm just an overly talkative observer. I don't close bugs. :-)


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (7 preceding siblings ...)
  2004-05-20 18:43 ` llewelly at xmission dot com
@ 2004-05-20 19:27 ` bangerth at ices dot utexas dot edu
  2004-05-21  9:21 ` llewelly at xmission dot com
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: bangerth at ices dot utexas dot edu @ 2004-05-20 19:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From bangerth at ices dot utexas dot edu  2004-05-19 18:28 -------
Subject: Re:  Can't have vectors of vector::const_iterator


> I'm just an overly talkative observer. I don't close bugs. :-)

I do quite frequently, but here I'd say it's up to the libstdc++ maintainers.

W.

-------------------------------------------------------------------------
Wolfgang Bangerth              email:            bangerth@ices.utexas.edu
                               www: http://www.ices.utexas.edu/~bangerth/



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-20 18:43 ` sebor at roguewave dot com
@ 2004-05-21  6:17   ` llewelly
  0 siblings, 0 replies; 21+ messages in thread
From: llewelly @ 2004-05-21  6:17 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

"sebor at roguewave dot com" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From sebor at roguewave dot com  2004-05-19 18:04 -------
> Subject: Re:  Can't have vectors of vector::const_iterator
> 
> FWIW, library issue 408 deals with something similar:
> vector<reverse_iterator<char*> >
> 
> http://www.open-std.org/jtc1/sc22/wg21/prot/14882fdis/n1635.html#408

For those who haven't a comittee username & pw:

http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#408


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (8 preceding siblings ...)
  2004-05-20 19:27 ` bangerth at ices dot utexas dot edu
@ 2004-05-21  9:21 ` llewelly at xmission dot com
  2004-05-25 14:33 ` bkoz at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: llewelly at xmission dot com @ 2004-05-21  9:21 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From llewelly at xmission dot com  2004-05-20 05:50 -------
Subject: Re:  Can't have vectors of vector::const_iterator

"sebor at roguewave dot com" <gcc-bugzilla@gcc.gnu.org> writes:

> ------- Additional Comments From sebor at roguewave dot com  2004-05-19 18:04 -------
> Subject: Re:  Can't have vectors of vector::const_iterator
> 
> FWIW, library issue 408 deals with something similar:
> vector<reverse_iterator<char*> >
> 
> http://www.open-std.org/jtc1/sc22/wg21/prot/14882fdis/n1635.html#408

For those who haven't a comittee username & pw:

http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#408


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (9 preceding siblings ...)
  2004-05-21  9:21 ` llewelly at xmission dot com
@ 2004-05-25 14:33 ` bkoz at gcc dot gnu dot org
  2004-06-20  6:53 ` [Bug libstdc++/15523] [DR 408] " pinskia at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 21+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2004-05-25 14:33 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From bkoz at gcc dot gnu dot org  2004-05-24 16:53 -------

I think we should either close this NAD, or suspend while waiting for the
standards committed to figure out precise semantics. 

Since 14990 is suspended for similar reasons, I suggest suspending.

-benjamin

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (11 preceding siblings ...)
  2004-06-20  6:53 ` [Bug libstdc++/15523] [DR 408] " pinskia at gcc dot gnu dot org
@ 2004-06-20  6:53 ` pinskia at gcc dot gnu dot org
  2005-01-13 13:30 ` polzin_spamprotect_ at gmx dot de
  13 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-06-20  6:53 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-06-20 06:53 -------
Confirming to ...

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2004-06-20 06:53:01
               date|                            |
            Summary|Can't have vectors of       |[DR 408] Can't have vectors
                   |vector::const_iterator      |of vector::const_iterator


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (10 preceding siblings ...)
  2004-05-25 14:33 ` bkoz at gcc dot gnu dot org
@ 2004-06-20  6:53 ` pinskia at gcc dot gnu dot org
  2004-06-20  6:53 ` pinskia at gcc dot gnu dot org
  2005-01-13 13:30 ` polzin_spamprotect_ at gmx dot de
  13 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-06-20  6:53 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-06-20 06:53 -------
suspending while waiting.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |SUSPENDED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
  2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
                   ` (12 preceding siblings ...)
  2004-06-20  6:53 ` pinskia at gcc dot gnu dot org
@ 2005-01-13 13:30 ` polzin_spamprotect_ at gmx dot de
  13 siblings, 0 replies; 21+ messages in thread
From: polzin_spamprotect_ at gmx dot de @ 2005-01-13 13:30 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 615 bytes --]


------- Additional Comments From polzin_spamprotect_ at gmx dot de  2005-01-13 13:30 -------
I just want to add the information that unfortunately already
"-D_GLIBCXX_DEBUG" turns on the abort, you don't need the PEDANTIC.

I find this annoying, because in my case rewriting is not so easy, because
I store a struct of different iterators in a vector, and this information
is gathered together one after the other and there is no scope, where all 
containers exist together. Thus, it´s not possible to initialize the struct
without a GLIBCXX_DEBUG abort.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
       [not found] <bug-15523-102@http.gcc.gnu.org/bugzilla/>
  2009-08-04 11:19 ` paolo dot carlini at oracle dot com
  2009-08-04 13:01 ` paolo at gcc dot gnu dot org
@ 2009-08-04 13:04 ` paolo dot carlini at oracle dot com
  2 siblings, 0 replies; 21+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-08-04 13:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from paolo dot carlini at oracle dot com  2009-08-04 13:04 -------
Fixed.


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
       [not found] <bug-15523-102@http.gcc.gnu.org/bugzilla/>
  2009-08-04 11:19 ` paolo dot carlini at oracle dot com
@ 2009-08-04 13:01 ` paolo at gcc dot gnu dot org
  2009-08-04 13:04 ` paolo dot carlini at oracle dot com
  2 siblings, 0 replies; 21+ messages in thread
From: paolo at gcc dot gnu dot org @ 2009-08-04 13:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from paolo at gcc dot gnu dot org  2009-08-04 13:01 -------
Subject: Bug 15523

Author: paolo
Date: Tue Aug  4 13:01:08 2009
New Revision: 150455

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=150455
Log:
2009-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

        PR libstdc++/15523
        * include/debug/safe_iterator.h (_Safe_iterator<>::
        _Safe_iterator(const _Safe_iterator&), _Safe_iterator<>::
        operator=(const _Safe_iterator&)): Implement resolution of DR 408,
        do not error out when the source is a value-initialized iterator.
        * testsuite/23_containers/vector/15523.cc: New.
        * doc/xml/manual/intro.xml: Add an entry for DR 408.

Added:
    trunk/libstdc++-v3/testsuite/23_containers/vector/15523.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/doc/xml/manual/intro.xml
    trunk/libstdc++-v3/include/debug/safe_iterator.h


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Bug libstdc++/15523] [DR 408] Can't have vectors of vector::const_iterator
       [not found] <bug-15523-102@http.gcc.gnu.org/bugzilla/>
@ 2009-08-04 11:19 ` paolo dot carlini at oracle dot com
  2009-08-04 13:01 ` paolo at gcc dot gnu dot org
  2009-08-04 13:04 ` paolo dot carlini at oracle dot com
  2 siblings, 0 replies; 21+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-08-04 11:19 UTC (permalink / raw)
  To: gcc-bugs



-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |paolo dot carlini at oracle
                   |dot org                     |dot com
             Status|SUSPENDED                   |ASSIGNED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15523


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2009-08-04 13:04 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-19 12:25 [Bug libstdc++/15523] New: Can't have vectors of vector::const_iterator bangerth at dealii dot org
2004-05-19 13:00 ` [Bug libstdc++/15523] " pinskia at gcc dot gnu dot org
2004-05-19 22:58 ` [Bug libstdc++/15523] New: " llewelly
2004-05-19 23:07 ` [Bug libstdc++/15523] " llewelly at xmission dot com
2004-05-20 15:16 ` bangerth at dealii dot org
2004-05-20 18:43   ` llewelly
2004-05-20 18:43 ` bangerth at ices dot utexas dot edu
2004-05-20 18:43   ` llewelly
2004-05-20 18:43 ` sebor at roguewave dot com
2004-05-21  6:17   ` llewelly
2004-05-20 18:43 ` llewelly at xmission dot com
2004-05-20 18:43 ` llewelly at xmission dot com
2004-05-20 19:27 ` bangerth at ices dot utexas dot edu
2004-05-21  9:21 ` llewelly at xmission dot com
2004-05-25 14:33 ` bkoz at gcc dot gnu dot org
2004-06-20  6:53 ` [Bug libstdc++/15523] [DR 408] " pinskia at gcc dot gnu dot org
2004-06-20  6:53 ` pinskia at gcc dot gnu dot org
2005-01-13 13:30 ` polzin_spamprotect_ at gmx dot de
     [not found] <bug-15523-102@http.gcc.gnu.org/bugzilla/>
2009-08-04 11:19 ` paolo dot carlini at oracle dot com
2009-08-04 13:01 ` paolo at gcc dot gnu dot org
2009-08-04 13:04 ` paolo dot carlini at oracle dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).