Thank you for your answers. All of your suggestions go into the right direction, however there's still one thing left that breakes it: the method itself (blah()) needs to be marked as const to be callable on a const object. Therefore, I need something like

void blah(...)(...) if(this ia const object) const : nothing {
}

I would also like to discuss the underlying problem. Even if we end up finding some syntactic monster to deal with this, there obviously is no sneaky syntax for it. Am I wrong thinking that is some very basic type checking problem? I mean, D already implements const transitively. Thus, if I cast some object to its const version, all its members magically turn to be const as well. Wouldn't it be natural to apply this here as well? This way, I would not even need to declare the lambda's parameter as const or anything; the compiler would only fail if I actually pass in something of which the compiler is unsure whether it changes the passed-in object or not...

Reply via email to