[Issue 4256] Inner template mathods can't access this pointer
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Sep 16 08:48:30 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4256
Simen Kjaeraas <simen.kjaras at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
--- Comment #1 from Simen Kjaeraas <simen.kjaras at gmail.com> 2011-09-16 08:48:05 PDT ---
This bug has grown worse. A lot worse. Good news: this now compiles:
struct foo {
int n;
void baz( ) {
void qux(T)() {
n = 3;
assert(n == 3); // Passes
}
qux!int();
}
}
void main( ) {
foo b;
assert(b.n == 0); // Passes
b.baz();
assert(b.n == 3); // Fails
}
As we can see, the change in n is not properly propagated. What's even worse,
is this:
struct foo {
int n;
void baz( ) {
void qux(T)(void* a) { // Added parameter
n = 3;
assert(n == 3); // Passes
assert(a == &this); // Added.
}
qux!int(&this);
}
}
void main( ) {
foo b;
assert(b.n == 0); // Passes
b.baz();
assert(b.n == 3); // No longer fails.
}
You can then remove the assert on line 7 (a == &this) to get the old behavior
back, the additional parameter changes nothing on its own.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list