함수와 연산자에 대한 오버로딩을 진행하면서 타입별로 하나하나 해줘야 했었던 불편함을 떠올려보자. 가령 제곱에 대해 오버로딩을 진행하려면 int 가 들어왔을 때, double이 들어왔을때 따로따로 해줬어야 했다. 혹은 #define 을 통해 처리했어야 했다. 하지만 이미 알고 있듯이 #define 의 정의가 힘들기 때문에 함수형으로 사용하고 싶다면 템플릿에 대해 공부해보도록 하자. 함수 템플릿(function template) 템플릿은 어떤 물체를 만들어내는 틀이라고 생각할 수 있다. 템플릿은 template 키워드를 사용한다. #include using namespace std; template T SQR(T a) { return a * a; } int main() { int a = 10; cout