Дело в том, что тело функции оказывается в двух модулях одновременно.
Можно сделать так:
> t.h
> > #pragma once
>
> template<class T>
> void fn(T v)
> {
> std::cout << "common\n";
> }
template<> void fn<double>(double v);
>
// [b]t.c
>
template<>
>
void fn<
double>(
double v)
> {
> std::cout <<
"spec\n";
> }
>
Либо определить функцию в заголовочном файле как inline или static.
template<> inline void fn<double>(double v) {}
template<> static void fn<double>(double v) {}
Posted via RSDN NNTP Server 1.9