fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <list>
  4.  
  5. template <bool C, template <typename...> class A, template <typename...> class B>
  6. struct If
  7. {
  8. template <typename... AArgs>
  9. using Type = A<AArgs...>;
  10. };
  11.  
  12. template <template <typename...> class A, template <typename...> class B>
  13. struct If<false, A, B>
  14. {
  15. template <typename... BArgs>
  16. using Type = B<BArgs...>;
  17. };
  18.  
  19. int main()
  20. {
  21. If<true, std::vector, std::list>::Type<int> ct = { 23, 42 };
  22. If<false, std::vector, std::list>::Type<double> cf = { 3.14159, 13.37 };
  23.  
  24. for (auto i : ct)
  25. std::cout << i << "\n";
  26. for (auto d : cf)
  27. std::cout << d << "\n";
  28.  
  29. return 0;
  30. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
23
42
3.14159
13.37