This is a followup to C++ templates: prevent instantiation of base template
I use templates to achieve function overloading without the mess of implicit type conversions
When compiling main.cpp, there's no way for the compiler to know which template specializations may exist in some other compilation unit -- so there's no way to flag this error at compile time, you have to wait until link time.