title: I'd like my private virtuals now, please
body: <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>