// P2128R6 | |
// { dg-do run { target c++11 } } | |
#include <initializer_list> | |
#include <cstdlib> | |
struct S | |
{ | |
S () : a {} {}; | |
int &operator[] (std::initializer_list<int> l) { | |
int sum = 0; | |
for (auto x : l) | |
sum += x; | |
return a[sum]; | |
} | |
int a[64]; | |
}; | |
int | |
main () | |
{ | |
S s; | |
if (&s[{0}] != &s.a[0] | |
|| &s[{42}] != &s.a[42] | |
|| &s[{5, 7, 9}] != &s.a[5 + 7 + 9] | |
|| &s[{1, 2, 3, 4}] != &s.a[1 + 2 + 3 + 4]) | |
abort (); | |
} |