[Issue 6695] typeof(this) does not take into account const/immutable attributes inside member functions
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Sep 20 08:47:49 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6695
--- Comment #3 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-09-20 08:47:22 PDT ---
void c() const {}
This should work, as mutable and const implicitly cast to immutable.
Two other things (even though the above is the *right* solution to your
problem):
1. You can overload c, you don't need to use a template
2. You *can* get the exact type called with by using a this template parameter:
import std.stdio;
struct b
{
void c(this T)() const
{
writeln(typeid(T));
}
}
void main()
{
immutable b b1;
b b2;
b1.c();
b2.c();
}
output:
immutable(testimmutable.b)
testimmutable.b
But please note, the struct a has nothing to do with these issues, it's just
simply a way you have declared an immutable b (which you can easily do on the
stack).
Declaring an immutable struct is the same as applying immutable to all the
members. Declaring a local immutable variable is the same thing.
Also note that in your attempt to use if constraints, you must use templates
(I'm sure you would have gotten error messages, so I think this is a simple
copy-paste omission)
--
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