You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2008/01/23 06:22:33 UTC

[jira] Updated: (STDCXX-500) 1 + std::deque::iterator ambiguous without debugging iterators

     [ https://issues.apache.org/jira/browse/STDCXX-500?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Sebor updated STDCXX-500:
--------------------------------

              Assignee: Travis Vitek
    Remaining Estimate: 8h
     Original Estimate: 8h

Set Estimated Hours and this time *really* assigned to Travis.

> 1 + std::deque::iterator ambiguous without debugging iterators
> --------------------------------------------------------------
>
>                 Key: STDCXX-500
>                 URL: https://issues.apache.org/jira/browse/STDCXX-500
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 24. Iterators
>    Affects Versions: 4.1.3, 4.2.0
>         Environment: HP aCC 6.0
>            Reporter: Martin Sebor
>            Assignee: Travis Vitek
>             Fix For: 4.2.1
>
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> Moved from Rogue Wave Bugzilla: http://bugzilla.cvo.roguewave.com/show_bug.cgi?id=1923
> -------- Original Message --------
> Subject: Re: FWD: Peren 6.4 and N + iterator & swap(deque, deque)
> Date: Mon, 18 Apr 2005 18:12:41 -0700 (PDT)
> From: Dennis Handly <dh...@cup.hp.com>
> To: dhandly@cup.hp.com, sebor@roguewave.com
> CC: Boris.Gubenko@hp.com, mahesha@india.hp.com, sgganesh@india.hp.com
> >From: Dennis Handly <dh...@cup.hp.com>
> >Or use deque directly:
> template <class _TypeT, class _Allocator>
> inline typename deque<_TypeT, _Allocator>::iterator
> operator+(typename deque<_TypeT,
> _Allocator>::iterator::difference_type __n,
>           typename deque<_TypeT, _Allocator>::iterator __rhs)
> {
>     return __rhs.operator+(__n);
> }
> This didn't work.  I need to also have one for const_iterator.
> And it seems the test is bad:
> error #2349: no operator "+" matches these operands
>             operand types are: int + std::deque<char,
>                       std::allocator<char>>::const_iterator
>         2+it04
>          ^
> 24(9) says that "n denotes a value of difference type Distance".
> So that this has to be "2L".  Or better yet:
>    ...:iterator::difference_type(2) + it04
> Does this seem like something we can get Perennial to change?
> Boris:
> Do we know how those other STLs work?  Do they have an extra int
> overloading?
> ------- Additional Comments From sebor@roguewave.com 2005-04-19 09:30:12 ----
> -------- Original Message --------
> Subject: Re: FWD: Peren 6.4 and N + iterator & swap(deque, deque)
> Date: Tue, 19 Apr 2005 10:29:32 -0600
> From: Martin Sebor <se...@roguewave.com>
> To: Dennis Handly <dh...@cup.hp.com>
> CC: Boris.Gubenko@hp.com,  mahesha@india.hp.com,  sgganesh@india.hp.com
> References: <20...@hpcll183.cup.hp.com>
> Dennis Handly wrote:
> >>From: Dennis Handly <dh...@cup.hp.com>
> >>Or use deque directly:
> > 
> > template <class _TypeT, class _Allocator>
> > inline typename deque<_TypeT, _Allocator>::iterator
> > operator+(typename deque<_TypeT,
> _Allocator>::iterator::difference_type __n,
> >           typename deque<_TypeT, _Allocator>::iterator __rhs)
> > {
> >     return __rhs.operator+(__n);
> > }
> > 
> > This didn't work.  I need to also have one for const_iterator.
> > 
> > And it seems the test is bad:
> > error #2349: no operator "+" matches these operands
> >             operand types are: int + std::deque<char,
> >                       std::allocator<char>>::const_iterator
> >         2+it04
> >          ^
> > 
> > 24(9) says that "n denotes a value of difference type Distance".
> Ah. That's because the type of 2 is int but deque iterator's
> distance type (that the iterator's type depends on) is long.
> Darn! Those templates, they always get you! I'll have to think
> about this one some more. I created bug 1923 to remind me.
> > 
> > So that this has to be "2L".  Or better yet:
> >    ...:iterator::difference_type(2) + it04
> > 
> > Does this seem like something we can get Perennial to change?
> Strictly speaking I think the test is incorrect. 24.1, p1 says
> that n (used in Table 76) denotes a value of the difference type
> Distance, but 2 is not. But as a matter of QoI any integer should
> work.
> Martin
> ------- Additional Comments From sebor@roguewave.com 2005-04-19 09:31:08 ----
> Here's the test case:
> $ cat t.cpp && aCC -AA -V -c t.cpp
> #include <deque>
> void foo (std::deque<char>::const_iterator i)
> {
>     i + 2;
>     2 + i;
> }
> aCC: HP aC++/ANSI C B3910B A.06.00 [Aug 25 2004]
> "t.cpp", line 6: error #2349: no operator "+" matches these operands
>             operand types are: int + std::deque<char,
>                       std::allocator<char>>::const_iterator
>       2 + i;
>         ^
> 1 error detected in the compilation of "t.cpp".

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.