分割コンパイルをしようとしたときに,
テンプレート関数のところで引っかかるのですが,
次の場合, 何がまずいのでしょうか? ご教授の程, よろしくお願いします.

// main.cpp
#include "test.h"
int main(int argc, char** argv, char** envv)
{
int a;
func(a);
return(0);
}

// test.h
#ifndef ___TEST_H
#define ___TEST_H
template <class Type>
void func(Type a);
#endif // ___TEST_H

// test.cpp
template <class Type>
void func(Type a){
return;
}

CYGWIN g++ によるコンパイル実行結果
> g++ -c main.cpp && g++ -c test.cpp && g++ -o main main.o test.o
main.cpp: undefined reference to `void func<int>(int)'
collect2: ld returned 1 exit status