What if I would chose template static polymorphism everywhere (when possible) against dynamic polymorphism/traditional class inheritance?
Actually I am aware about some obvious disguises:
- longer compilation time (not so huge actually);
- the fact I cannot provide the compiled object files;
- the need of more forward declarations for template specialization.
- multi-level inheritance forward declarations looks a little like boilerplate code... But nothing really terrible, since I do not use a lot of level of inheritance.
But what else? Are any other real recommendations against the use & abuse of static polymorphism?
Note also in most of cases I really do not need/use at all CRTP-like techniques.
Actually, I really like to not have to deal with virtual functions if possible ( ?° ?? ?°) ( I know I am obligated to deal with them anyway, like when using DirectX COM interfaces...)