condition
- condition는 인자가 3가지가 있는데 첫번째 인자에 따라서 값이 두번째것으로 될 것인지 or 세번째 것으로 될 것인지 변경된다.
conditional<true, int, double>::type v1;
conditional<false, int, double>::type v2;
위에서 첫번째 v1은 첫번째인자가 true라서 int로 된다.
v2는 첫번째 인자가 false라서 v2의 값은 double이된다.
condition 구현.
template<bool, typename T1, typename T2>
struct conditional
{
using type = T1;
};
template<typename T1, typename T2>
struct conditional<false, T1, T2>
{
using type = T2;
};
int main()
{
//conditional의 bool 인자가 true이거나, false로 결정되는데 bool이 true이면 두번재가 채택되고, bool이 false이면 세번째가 채택된다..
conditional<true, int, double>::type v1;
conditional<false, int, double>::type v2;
cout << typeid(v1).name() << endl;
cout << typeid(v2).name() << endl;
}
- condition을 구현할때도 template의 특수화를 이용할 수 있다. 부분 특수화를이용하는데 기본값은 true일 경우, false인 경우에는 부분특수화를 해주면된다.
'c++ > template프로그래밍.' 카테고리의 다른 글
template_CRT (0) | 2022.05.22 |
---|---|
type_trais (0) | 2022.05.18 |
template기본문법 (parameter, friend, typename..) (0) | 2022.05.18 |
templateSpecialization, meta template.. (특수화, 메타 템플릿..) (0) | 2022.05.16 |
thintemplate (0) | 2022.05.16 |