- 우선 template은 선언과 구현부를 h/cpp로 나눠서는 안된다
 
#include <iostream>
using namespace std;
template<typename T> T square(T a)
{
  return a * a;
}
int main()
{
  printf("%p\n", &square);    // 이렇게 하면 주소가 나올까?
  // 아직은 주소가 없기에 출력이 안된다.
  
  printf("%p\n", &square<int>); // 주소가 출력이 된다.
  
  // 함수 포인터를 뽑을 수도 있다
  printf("%p\n", static_cast<int(*)(int)>(&square));    // ok
}