As I said in another email, this is fine so long as the specialization
is for a primitive type. For user-defined types it gets much more
complicated, and leads to circular dependencies.
On Fri, 10 Jul 2009 09:25 -0400, "John Fine" <johnsfine@verizon.net>
wrote:
No. The header file did not declare the specialization, so the
specialization was called without being declared.
I think you only need to declare it, not define it, in the compilation
where it is called (though one of the posts in that link said
otherwise). Change the header file to
// Binky.h
#ifndef BINKY_H
#define BINKY_H
template<typename T> const char* getString()
{
return "T";
}
template<> const char* getstring<int>();
#endif