This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Bug 8861] 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

--
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery LLC
         The voices in my head said this was stupid too
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]