This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Incorrect (?) template specialization results when compiling with -O3
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