OSDN Git Service

PR c++/36628
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / variadic26.C
1 // { dg-options "-std=gnu++0x" }
2 template<template<int, int> class Meta, int Initial, int... Values>
3 struct accumulate {
4   static const int value = Initial;
5 };
6
7 template<template<int, int> class Meta, int Initial, int Value, int... Rest>
8 struct accumulate<Meta, Initial, Value, Rest...> {
9   static const int value = 
10     Meta<Value, accumulate<Meta, Initial, Rest...>::value>::value;
11 };
12
13 template<int X, int Y>
14 struct sum {
15   static const int value = X + Y;
16 };
17
18 template<int X, int Y>
19 struct prod {
20   static const int value = X * Y;
21 };
22
23 int a0[accumulate<sum,0,1,2,3,4,5>::value == 15? 1 : -1];
24 int a1[accumulate<prod,1,1,2,3,4,5>::value == 120? 1 : -1];