I converted a function to a template, and started getting this error. I must not be understanding a limitation of templates. Can someone tell me why this is broken?
<
It's been years since I did much C++, but I think you are encountering a problem of separate compilation. Templates are instantiated at compilation, not linking.
Therefore, when you are making the call to foo(), you are not really instantiating the template in the sense that no new function code is generated, you're just creating a symbol that the linker has to resolve.
However, when the second file is compiled, it has just the template and it is never instantiated, so no version of foo() that actually deals with ints is generated. As a result, when you link everything together, you get the error.
I'm not 100% sure what to do about this, but I suspect that you would need to force an instantiation of foo() with ints in that second file (assuming it's a C++). I only worked with class templates, not function templates, I'm sure someone here will give you the exact code in a few...