오전 1시간동안 코드카타를 하는데 아직 그럴 실력이 안돼서 일단 문법 공부를 더 해보려고한다.
타입을 매개변수로 받는 코드 생성 매커니즘이다.
컴파일 타임에 타입별 코드를 생성하는 시스템이라고 생각하면 좋다.
TS를 하던 내 입장에서는 제네릭이라고 생각하니까 이해가 편했다.
template<typename T>
T Add(T a, T b)
{
return a + b;
}
>> 컴파일 시
int Add (int a, int b)
{ ... }
float Add ( float a, float b)
{ ... }
가상함수보다 빠름
여러 타입에서 같은 로직 사용
template<typename T>
T Max(T a, T b)
{ ... }
template<typename T>
class Box
{
public:
T value;
}
Box<int> a;
Box<float> b;
std::vector<int> v;
std::sort(v.begin(), v.end());
vector<T> > 타입별 컨테이너 생성sort<T> > 타입에 맞는 정렬코드 생성template<>
class Box<bool>
{ ... }
특정 타입에 대해 다르게 동작하도록 커스터마이징 특정 타입에 대해 다르게 동작하도록 커스터마이징
template<typename T, typename K, typename F ... >
class Test
{
public:
T First;
K Second;
F Third;
...
}
Test<int, float, double> a;
template<typename... Args>
Print(T); Print(T, K); Print(T, K, F); ...
가변 템플릿은 쓸 내용이 많아서 나중에 다시 한번 공부할 예정