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).