digitalmars.D.bugs - [Issue 284] New: Wrong type of template value parameter
- d-bugmail puremagic.com (25/25) Aug 12 2006 http://d.puremagic.com/issues/show_bug.cgi?id=284
- Thomas Kuehne (11/24) Aug 14 2006 -----BEGIN PGP SIGNED MESSAGE-----
- d-bugmail puremagic.com (14/14) Aug 15 2006 http://d.puremagic.com/issues/show_bug.cgi?id=284
http://d.puremagic.com/issues/show_bug.cgi?id=284
Summary: Wrong type of template value parameter
Product: D
Version: 0.163
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P3
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: oskar.linde gmail.com
struct A(int x) { }
template B(uint x) {
static if (x == 3)
static assert(is(A!(3) == A!(x)));
}
static this() { B!(3); }
---
file.d(5): static assert (is(A == A )) is false
---
Two instances of A!(3) is created. One with an int value type and the other one
with a uint(!) value type. The mangled forms are *__T1AVi3Z1A and *__T1AVk3Z1A
respectively.
--
Aug 12 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 d-bugmail puremagic.com schrieb am 2006-08-12:http://d.puremagic.com/issues/show_bug.cgi?id=284struct A(int x) { } template B(uint x) { static if (x == 3) static assert(is(A!(3) == A!(x))); } static this() { B!(3); } --- file.d(5): static assert (is(A == A )) is false --- Two instances of A!(3) is created. One with an int value type and the other one with a uint(!) value type. The mangled forms are *__T1AVi3Z1A and *__T1AVk3Z1A respectively.For the mangling aspect see http://d.puremagic.com/issues/show_bug.cgi?id=109 Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFE4FsmLK5blCcjpWoRAu3yAJ4ovoL9rE78OwWyhWsKze0rHEdC8ACgnrAa LrfyQ2b7PaBNIOj95s13bSQ= =B//3 -----END PGP SIGNATURE-----
Aug 14 2006
http://d.puremagic.com/issues/show_bug.cgi?id=284
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
The generated template instance is based on the types of the arguments *before*
they are implicitly converted to the template parameter type. This is
deliberately designed this way so that new template specializations can be
added without upsetting existing code. I adjusted the template documentation to
clarify this point.
Not a bug.
--
Aug 15 2006









Thomas Kuehne <thomas-dloop kuehne.cn> 