title: c++ standard practice: virtual interface classes vs. templates
body: <p>I have to make a decision regarding generalization vs polymorphism.</p>
  
  <p>Well the scenario is standard: I want to make my monolithic interdependent
  code to be more modular, clean and extensible.
  It is still in a stage where the change of design principle is doable,
  and, as I look at it, highly desirable.</p>
  
  <p>Will I introduce purely virtual base classes (interfaces) or templates?</p>
  
  <p>I am aware of the basics regarding the template option:
  less indirection, better performance, more compiling
  but
  no late binding, and so on.</p>
  
  <p>The stl does not use much (or none?) inheritance, and boost doesn't either.
  But I think those are aimed to be really small basic tools that are used every
  2 lines of code by the programmer.</p>
  
  <p>I consider the inheritance and late binding approach to be more sensible for
  plug-in style of big pieces of code and functionality that should be interchangeable,
  updateable etc. after deployment or even during runtime.</p>
  
  <p>Well my scenario lies somewhat inbetween.</p>
  
  <p>I dont need to exchange pieces of code on the fly at runtime, compile time is fine.
  Usually it is also a very central and frequently used piece of functionality,
  it is not logically seperatable into big blocks.</p>
  
  <p>This lets me tend somewhat to the template solution.
  To me it also looks somewhat cleaner.</p>
  
  <p>Are there any big bad implications, are interfaces still THE way
  to go? When are they not?
  Which complies more with standard c++ style?</p>
  
  <p>I know this is bordering on subjective, but I am really interested in 
  some experiences. I don't own a copy of Scott Meyers effective C++ 
  so I set my hopes on you guys :)</p>