variadic-init.c

来自「用于进行gcc测试」· C语言 代码 · 共 57 行

C
57
字号
// { dg-do run }// { dg-options "-std=gnu++0x" }// PR c++/33510#define SIZE_FROM_CTORextern "C" void abort ();template<int M, int N> struct pair{  int i, j;  pair () : i (M), j (N) {}};template<int... M> struct S{  template<int... N> static int *foo ()  {#ifdef SIZE_FROM_CTOR    static int x[] = { (M + N)..., -1 };#else    static int x[1 + sizeof... N] = { (M + N)..., -1 };#endif    return x;  }};template<typename... M> struct R{  template<typename... N> static int *foo ()  {#ifdef SIZE_FROM_CTOR    static int x[] = { (sizeof(M) + sizeof(N))..., -1 };#else    static int x[1 + sizeof... N] = { (sizeof(M) + sizeof(N))..., -1 };#endif    return x;  }};int *bar (){  return S<0, 1, 2>::foo<0, 1, 2> ();}int *baz (){  return R<char, short, int>::foo<float, double, long> ();}int main (){  int *p = bar ();  if (p[0] != 0 || p[1] != 2 || p[2] != 4 || p[3] != -1)    abort ();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?