PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / template / stdarg1.C
blob94804eeed822af71fb4bb89877e83bc0765803f4
1 // PR c++/47022
2 // { dg-do compile }
3 // Suppress a warning that is irrelevant to the purpose of this test.
4 // { dg-options "-Wno-abi" { target arm_eabi } }
6 #include <cstdarg>
8 template <typename T>
9 void
10 f1 (T *p, va_list ap)
12   *p = va_arg (ap, long double);
13   *p += va_arg (ap, double);
16 template <typename T>
17 void
18 f2 (T *p, va_list ap)
20   *p = __real__ va_arg (ap, _Complex int);
21   *p += __imag__ va_arg (ap, _Complex double);
22   *p += __imag__ va_arg (ap, _Complex long double);
25 template <typename T>
26 void
27 f3 (T *p, va_list ap)
29   *p = va_arg (ap, T);
32 void
33 foo (int x, va_list ap)
35   if (x == 0)
36     {
37       long double ld;
38       f1 (&ld, ap);
39     }
40   else if (x == 1)
41     {
42       int i;
43       f2 (&i, ap);
44     }
45   else if (x == 2)
46     {
47       long double ld;
48       f3 (&ld, ap);
49     }
50   else if (x == 3)
51     {
52       _Complex double cd;
53       f3 (&cd, ap);
54     }