From: mpolacek Date: Sat, 1 Dec 2018 21:09:31 +0000 (+0000) Subject: PR c++/83856 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f8d00170069e741afac625241ccf747bdb8972d;p=thirdparty%2Fgcc.git PR c++/83856 * g++.dg/cpp1y/lambda-generic-83856.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266711 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 610a26453fa4..c7afb2b71c2a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -34,6 +34,9 @@ * g++.dg/template/typedef6.C: Adjust dg-error. * g++.dg/template/typename3.C: Only expect error in c++17_down. + PR c++/83856 + * g++.dg/cpp1y/lambda-generic-83856.C: New test. + 2018-12-01 Jeff Law * gcc.dg/predict-22.c: Update expected output. diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-83856.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-83856.C new file mode 100644 index 000000000000..ab82b6241aab --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-83856.C @@ -0,0 +1,30 @@ +// PR c++/83856 +// { dg-do compile { target c++14 } } + +namespace std { +template _Tp declval(); +template class initializer_list { + _E *_M_len; + +public: + unsigned long 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) {}); +}