// PR c++/83856 // { dg-do compile { target c++14 } } namespace std { template _Tp declval(); template class initializer_list { _E *_M_len; public: __SIZE_TYPE__ size; _E begin(); }; template struct array { void operator[](long); }; } // namespace std template struct simd { static int size(); template simd(F, decltype(std::declval()(0)) * = nullptr) {} }; template void test_tuples(std::initializer_list> data, F... fun_pack) { auto it = data.begin(); const int remaining = V::size(); [](...) {}((fun_pack([&](auto) { it[remaining]; }), 0)...); } void f() { test_tuples>({}, [](simd) {}); }