template <typaname T>
void swap(T &a, T &b)
{ ... }
int main()
{
int a = 1;
int b = 2;
swap(a, b);
}
함수 템플릿은 타입 지정이 자동으로 수행됨.
template<typename A, typename B, typename C>
void func(A aVal, B bVal, C cVal)
{
cout << &aVal << endl;
cout << &bVal << endl;
cout << &cVal << endl;
}
template<typename B>
void func(int aVal, B bVal, char cVal)
{
cout << aVal << endl;
cout << &bVal << endl;
cout << cVal << endl;
}
template<typename T>
class Test
{
private:
T val;
public:
void func1()
{ ... }
void func2();
};
template<typename T>
void Test<T>::func2()
{ ... }
템플릿은 선언과 정의를 분리하지 않는 것이 좋음.