So I'm currently trying to implement some more generic classes (arrays, lists, vectors, etc.) and it seems for what I want to do templates would provide the easiest path forward. I know Casey often bashes them for their slow compilation times but it got me thinking about what exactly makes them slower than #define's? What do C++ compilers need to perform for templates that causes this slowness? I read somewhere that one of the main issues with slow compilation has to do with templates being declared in multiple compilation units but if that's the case then they shouldn't be too bad in a handmade hero style project given everything is compiled into essentially one translation unit.