public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/13548] New: SFINAE fails to eliminate overload
@ 2004-01-02 18:47 dave at boost-consulting dot com
2004-01-02 18:47 ` [Bug c++/13548] " dave at boost-consulting dot com
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: dave at boost-consulting dot com @ 2004-01-02 18:47 UTC (permalink / raw)
To: gcc-bugs
It's not clear which operator== is invoked by the main() function in the
enclosed example, but none of them should work. Since neither of
reverse_iterator<int**> or indirect_iterator<int**> is convertible to the
other, SFINAE should eliminate the templated operator== in namespace boost.
--
Summary: SFINAE fails to eliminate overload
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dave at boost-consulting dot com
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
@ 2004-01-02 18:47 ` dave at boost-consulting dot com
2004-01-02 20:53 ` pinskia at gcc dot gnu dot org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: dave at boost-consulting dot com @ 2004-01-02 18:47 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From dave at boost-consulting dot com 2004-01-02 18:47 -------
Created an attachment (id=5400)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=5400&action=view)
preprocessed source
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
2004-01-02 18:47 ` [Bug c++/13548] " dave at boost-consulting dot com
@ 2004-01-02 20:53 ` pinskia at gcc dot gnu dot org
2004-01-02 20:55 ` pinskia at gcc dot gnu dot org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-02 20:53 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
Version|3.4.0 |3.3.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
2004-01-02 18:47 ` [Bug c++/13548] " dave at boost-consulting dot com
2004-01-02 20:53 ` pinskia at gcc dot gnu dot org
@ 2004-01-02 20:55 ` pinskia at gcc dot gnu dot org
2004-01-02 21:35 ` pinskia at gcc dot gnu dot org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-02 20:55 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-01-02 20:55 -------
The preprocessed source is for 3.3.1 which does not compile at all on 3.4.0 but does compile just
fine on 3.3.3, Can you attach the one for 3.4?
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
` (2 preceding siblings ...)
2004-01-02 20:55 ` pinskia at gcc dot gnu dot org
@ 2004-01-02 21:35 ` pinskia at gcc dot gnu dot org
2004-01-02 22:45 ` dave at boost-consulting dot com
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-02 21:35 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-01-02 21:35 -------
You are wrong as it should match:
boost::detail::enable_if_interoperable<boost::indirect_iterator<int**, boost::use_default,
boost::use_default, boost::use_default, boost::use_default>, boost::reverse_iterator<int**
>, bool>::type
boost::operator==<boost::indirect_iterator<int**, boost::use_default, boost::use_default,
boost::use_default, boost::use_default>, int, boost::random_access_traversal_tag, int&,
int, boost::reverse_iterator<int**>, int*, boost::random_access_traversal_tag, int*&, int>
(boost::iterator_facade<boost::indirect_iterator<int**, boost::use_default,
boost::use_default, boost::use_default, boost::use_default>, int,
boost::random_access_traversal_tag, int&, int> const&,
boost::iterator_facade<boost::reverse_iterator<int**>, int*,
boost::random_access_traversal_tag, int*&, int> const&)
As iterator_adaptor's base is a iterator_facade.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
` (3 preceding siblings ...)
2004-01-02 21:35 ` pinskia at gcc dot gnu dot org
@ 2004-01-02 22:45 ` dave at boost-consulting dot com
2004-01-02 22:57 ` pinskia at gcc dot gnu dot org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: dave at boost-consulting dot com @ 2004-01-02 22:45 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From dave at boost-consulting dot com 2004-01-02 22:45 -------
Bluntly starting your reply with "you are wrong", especially when you, in
fact, are wrong, is impolite. I'm just trying to help by reporting this one,
and wish to be treated accordingly.
That base is not enough to make it match. What is the return type of this
function?
boost::detail::enable_if_interoperable<boost::indirect_iterator<int**,
boost::use_default,
boost::use_default, boost::use_default, boost::use_default>,
boost::reverse_iterator<int**
>, bool>::type
Is not a valid type, therefore the overload should be removed. Substitution
failure is not an error
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
` (4 preceding siblings ...)
2004-01-02 22:45 ` dave at boost-consulting dot com
@ 2004-01-02 22:57 ` pinskia at gcc dot gnu dot org
2004-01-03 0:36 ` dave at boost-consulting dot com
2004-01-03 2:50 ` dave at boost-consulting dot com
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-02 22:57 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-01-02 22:57 -------
How is enable_if_interoperable<boost::indirect_iterator<..>, boost::reverse_iterator<..>, bool> an
invalid type, there is only a definition of enable_if_interoperable:
template <class Facade1, class Facade2, class Return>
struct enable_if_interoperable
{
typedef Return type;
};
template < class Derived1, class V1, class TC1, class R1, class D1 , class Derived2, class V2, class
TC2, class R2, class D2 >
typename detail::enable_if_interoperable< Derived1, Derived2, bool >::type
operator ==
(
iterator_facade<Derived1, V1, TC1, R1, D1> const& lhs ,
iterator_facade<Derived2, V2, TC2, R2, D2> const& rhs)
Derived1 = boost::indirect_iterator<int**, boost::use_default, boost::use_default, boost::
use_default, boost::use_default>
Derived2 = boost::reverse_iterator<int**>
V1 = int
V2 = int *
TC1 = boost::random_access_traversal_tag
TC2 = boost::random_access_traversal_tag
R1 = int&
R2 = int*&
D1 = int
D2 = int
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
` (5 preceding siblings ...)
2004-01-02 22:57 ` pinskia at gcc dot gnu dot org
@ 2004-01-03 0:36 ` dave at boost-consulting dot com
2004-01-03 2:50 ` dave at boost-consulting dot com
7 siblings, 0 replies; 9+ messages in thread
From: dave at boost-consulting dot com @ 2004-01-03 0:36 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From dave at boost-consulting dot com 2004-01-03 00:36 -------
You're right; enable_if_interoperable was given that definition as a
workaround for earlier versions of GCC. Let me look into this further and let
you know by tomorrow. Sorry...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c++/13548] SFINAE fails to eliminate overload
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
` (6 preceding siblings ...)
2004-01-03 0:36 ` dave at boost-consulting dot com
@ 2004-01-03 2:50 ` dave at boost-consulting dot com
7 siblings, 0 replies; 9+ messages in thread
From: dave at boost-consulting dot com @ 2004-01-03 2:50 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From dave at boost-consulting dot com 2004-01-03 02:50 -------
OK, this one was my mistake. It was a bug in previous versions of GCC, but it
is fixed in the latest gcc-3.4 snapshot.
Sorry to waste time on this.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13548
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2004-01-03 2:50 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-02 18:47 [Bug c++/13548] New: SFINAE fails to eliminate overload dave at boost-consulting dot com
2004-01-02 18:47 ` [Bug c++/13548] " dave at boost-consulting dot com
2004-01-02 20:53 ` pinskia at gcc dot gnu dot org
2004-01-02 20:55 ` pinskia at gcc dot gnu dot org
2004-01-02 21:35 ` pinskia at gcc dot gnu dot org
2004-01-02 22:45 ` dave at boost-consulting dot com
2004-01-02 22:57 ` pinskia at gcc dot gnu dot org
2004-01-03 0:36 ` dave at boost-consulting dot com
2004-01-03 2:50 ` dave at boost-consulting 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).