On Wednesday, May 02, 2012 13:30:11 Mehrdad wrote: > Okay thanks for the replies, that clears up a bunch of things for me. > > Regarding the last part: > > Yes, it 'works'. The only trouble is that you can never set the interface > methods to be 'const', because any sort of indirection can screw you over > later. This is why const is less useful than it could be.
You _can_ make the interface methods const if you're willing to deal with that restriction in everything that implements it. Sometimes that's reasonable. Sometimes it's not. The simple truth of the matter is that you can't just const in D as much as you would in C++, simply because it's more restrictive. It's more powerful thanks to its greater guarantees, but that comes at a cost. So, programmers are going to have to learn when using const in D makes sense and when it doesn't, even if they're experts at in C++. And a lot of it depends on what you're doing (e.g. I pretty much never lazy load anything, so const would never cause me problems due to disallowing lazy loading, but for someone who needs lazy loading for performance, const make be unacceptable in many cases). - Jonathan M Davis
