fork download
  1. #include <type_traits>
  2. #include <iostream>
  3.  
  4. enum class enabler {};
  5.  
  6. template<bool B>
  7. using EnableIf = typename std::enable_if<B, enabler>::type;
  8.  
  9. template <int N>
  10. struct test {
  11. void foo() {}
  12.  
  13. template<int P = N, EnableIf<P == 2>...>
  14. void bar() {
  15. std::cout << "N == 2\n";
  16. }
  17.  
  18. template <int P = N, EnableIf<P == 3>...>
  19. void bar() {
  20. std::cout << "N == 3\n";
  21. }
  22. };
  23.  
  24. int main() {
  25. test<1> a = {};
  26. test<2> b = {};
  27. test<3> c = {};
  28.  
  29. // a.foo();
  30. b.bar();
  31. // c.foo();
  32.  
  33. // b.bar();
  34. c.bar();
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
N == 2
N == 3