variadic20.c

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

C
48
字号
// { dg-options "-std=gnu++0x" }template<typename T> struct add_pointer;template<typename T> struct add_reference;template<template<class T> class... Metafunctions>struct metatuple {  static const int value = 0;};template<>struct metatuple<add_pointer> {  static const int value = 1;};template<template<class T> class Meta>struct metatuple<Meta, Meta> { // { dg-error "candidates" }  static const int value = 2;};template<template<class T> class... Metafunctions>struct metatuple<add_pointer, Metafunctions...> { // { dg-error "" }  static const int value = 3;};template<template<class T> class First,         template<class T> class... Metafunctions>struct metatuple<First, Metafunctions...> { // { dg-error "struct" }  static const int value = 4;};template<template<class T> class First,         template<class T> class Second,         template<class T> class... Metafunctions>struct metatuple<First, Second, Metafunctions...> { // { dg-error "struct" }  static const int value = 5;};int a0[metatuple<>::value == 0? 1 : -1];int a1[metatuple<add_pointer>::value == 1? 1 : -1];int a2a[metatuple<add_pointer, add_pointer>::value == 2? 1 : -1]; // { dg-error "ambiguous" }int a2b[metatuple<add_reference, add_reference>::value == 2? 1 : -1];int a3[metatuple<add_pointer, add_reference>::value == 3? 1 : -1]; // { dg-error "ambiguous" }int a4[metatuple<add_reference>::value == 4? 1 : -1];int a5[metatuple<add_reference, add_pointer>::value == 5? 1 : -1];// { dg-error "incomplete" "" { target *-*-* } 40 }// { dg-error "incomplete" "" { target *-*-* } 42 }

⌨️ 快捷键说明

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