mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
33 lines
692 B
D
33 lines
692 B
D
class ByNameC(alias Var)
|
|
{
|
|
alias var = Var;
|
|
}
|
|
|
|
struct ByNameS(alias Var)
|
|
{
|
|
alias var = Var;
|
|
ubyte value = 1;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
ulong x;
|
|
ByNameS!x v;
|
|
ubyte w = 2;
|
|
|
|
v.var = 0xAA_BB; /* stomps over v.value and w */
|
|
|
|
assert(w == 2);
|
|
assert(v.value == 1);
|
|
//printf("%x\n", w); /* prints "aa", should be 2 */
|
|
//printf("%x\n", v.value); /* prints "bb", should be 1 */
|
|
|
|
auto c = new ByNameC!x;
|
|
c.var = 0xAA_BB; /* stomps over c.__vptr */
|
|
|
|
assert(*cast(ulong*)c != 0xAA_BB);
|
|
//printf("%x\n", *cast(ulong*)c); /* prints "aabb", should be pointer value */
|
|
|
|
assert(x == 0xAA_BB);
|
|
//printf("%lx\n", x); /* prints 0, should be "aabb" */
|
|
}
|