This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/36797] ICE on SFINAE and __is_empty
- From: "mark at codesourcery dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Jul 2008 16:53:01 -0000
- Subject: [Bug c++/36797] ICE on SFINAE and __is_empty
- References: <bug-36797-1186@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #9 from mark at codesourcery dot com 2008-07-14 16:53 -------
Subject: Re: ICE on SFINAE and __is_empty
sebor at roguewave dot com wrote:
> int foo<A<0> >(B<A<0>, __is_empty (A<0>)>::X*):
> _Z3fooI1AILi0EEEiPN1BIT_Xv19builtin16TOS3_EE1XE
>
> int foo<int>(B<int, !__is_empty (int)>::X*):
> _Z3fooIiEiPN1BIT_Xntv19builtin16TOS1_EE1XE
OK. I don't see anything inherently wrong with that mangling, though of
course if we're going to make this standard, we need EDG's table of
builtins (so we known which ones are which), and we need to specify
semantics for each of the builtins so that we know that we can mix
object files between different compilers. (No good if G++'s __is_empty
is somehow subtly different than EDG's __is_empty.)
So, I think the high-order issues here are still:
(1) Do we need a mangling? (I know you think we do.)
(2) If so, do we want to specify it at the ABI level, or use something
G++-specific?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36797