본문 바로가기
c++/template프로그래밍.

std::condition 구현

by kcj3054 2022. 5. 23.

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