aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/consteval29.C
blob: 61590225bd68c40cda313077390a8b0f84ae02a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// PR c++/103443
// { dg-do compile { target c++20 } }

template<int...>
struct A { };

template<int... Is>
consteval unsigned index_sequence2mask(A<Is...>) {
  if constexpr (sizeof...(Is) == 0u)
    return 0u;
  else
    return ((1u << Is) | ...);
}

template<unsigned Mask = index_sequence2mask(A<1,2,3>{})>
void use_mask();

int main() {
  use_mask();
}