[ https://issues.apache.org/jira/browse/STDCXX-500?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor updated STDCXX-500: -------------------------------- Affects Version/s: 4.1.2 4.1.4 Fix Version/s: (was: 4.2.1) 4.3 This affects all released versions. Deferred until 4.3. > 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.2, 4.1.3, 4.1.4, 4.2.0 > Environment: HP aCC 6.0 > Reporter: Martin Sebor > Assignee: Martin Sebor > Priority: Minor > Fix For: 4.3 > > Original Estimate: 8h > Time Spent: 2h > Remaining Estimate: 6h > > 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 > To: dhandly@cup.hp.com, sebor@roguewave.com > CC: Boris.Gubenko@hp.com, mahesha@india.hp.com, sgganesh@india.hp.com > >From: Dennis Handly > >Or use deque directly: > template > 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 std::allocator>::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 > To: Dennis Handly > CC: Boris.Gubenko@hp.com, mahesha@india.hp.com, sgganesh@india.hp.com > References: <200504190112.SAA17097@hpcll183.cup.hp.com> > Dennis Handly wrote: > >>From: Dennis Handly > >>Or use deque directly: > > > > template > > 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 > std::allocator>::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 > void foo (std::deque::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 std::allocator>::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.