On Tuesday, February 14, 2012 00:15:40 Martin Nowak wrote: > Can you elaborate on what issues you see with NVI. After all it's only the > final public > method that needs to call the virtual private methods.
As I explain in that bug report, NVI can be acheived with protected rather than private. So, we can do NVI now with private being non-virtual. However, if we make private virtual, then the compiler can no longer inline private functions in classes unless they're marked as final. That's a performance hit to pretty much every class ever written. Yes, the conscientious programmer will mark their classes' private functions final unless they intend to use them for NVI, but the _default_ is then inefficient for little to no gain. All you gain is the ability to do NVI with private instead of protected, and that is not even vaguely worth the performance hit to almost every D class ever IMHO. - Jonathan M Davis