[Bug c++/8861] [3.3/3.4 regression] [ABI] mangling floating point literal in template arg expression
nathan@codesourcery.com
gcc-bugzilla@gcc.gnu.org
Tue Jun 10 11:30:00 GMT 2003
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8861
------- Additional Comments From nathan@codesourcery.com 2003-06-10 11:30 -------
Subject: Re: Revised patch - floating point literal mangling
Richard Earnshaw wrote:
> I'm surprised, given that
>
> template <int I> void f(A<I+int(1.234+1.234)> a) { ... }
this is ill-formed. a non-type argment must be ...
an integral constant expression ...
an integral constant expression can involve only ... floating
literals only if they are cast to integral or enumeration type ...
>
> and
>
> template <int I> void f(A<I+int(2.468)> a) { ... }
>
> don't mangle identically, that a representation of the literal *as it
> appeared in the source* isn't used.
Even
template <int I> void f(A<I+4>);
and
template <int I> void f(A<I+1+3>);
is ill-formed, no diagnostic required. [14.5.5.1]/8
They are neither guaranteed identical no guaranteed different.
nathan
More information about the Gcc-bugs
mailing list