I'd like my private virtuals now, please
<p>What is the reasoning behind disallowing private virtual functions? </p>

<p>Empty private virtuals would have enabled low friction pure customization points.</p>

<p>Abstract functions have high friction and protected virtuals cause confusion and noise.</p>

<p><strong>Some further explanation:</strong></p>

<p>The Non Virtual Interface pattern separates the interface responsibility (public) from providing customisation points (virtual).</p>

<p>When using NVI in class design I have to make my virtuals protected.
Having the option to make them private makes the intent even stronger. It means that descendants can <em>only</em> provide customisation and there is no confusion over whether to call the base or not, in fact it is prohibited. There must have been a good reason to explicitly disallow it (Diagnostic: "Private method cannot be polymorphic"). </p>
