brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · ff1711f Raw
67 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only %s2 3template<unsigned I>4struct FibonacciEval;5 6template<unsigned I>7struct Fibonacci {8  enum { value = FibonacciEval<I-1>::value + FibonacciEval<I-2>::value };9};10 11template<unsigned I>12struct FibonacciEval {13  enum { value = Fibonacci<I>::value };14};15 16template<> struct Fibonacci<0> {17  enum { value = 0 };18};19 20template<> struct Fibonacci<1> {21  enum { value = 1 };22};23 24int array5[Fibonacci<5>::value == 5? 1 : -1];25int array10[Fibonacci<10>::value == 55? 1 : -1];26 27template<unsigned I>28struct FibonacciEval2;29 30template<unsigned I>31struct Fibonacci2 {32  static const unsigned value 33    = FibonacciEval2<I-1>::value + FibonacciEval2<I-2>::value;34};35 36template<unsigned I>37struct FibonacciEval2 {38  static const unsigned value = Fibonacci2<I>::value;39};40 41template<> struct Fibonacci2<0> {42  static const unsigned value = 0;43};44 45template<> struct Fibonacci2<1> {46  static const unsigned value = 1;47};48 49int array5_2[Fibonacci2<5>::value == 5? 1 : -1];50int array10_2[Fibonacci2<10>::value == 55? 1 : -1];51 52template<unsigned I>53struct Fibonacci3 {54  static const unsigned value = Fibonacci3<I-1>::value + Fibonacci3<I-2>::value;55};56 57template<> struct Fibonacci3<0> {58  static const unsigned value = 0;59};60 61template<> struct Fibonacci3<1> {62  static const unsigned value = 1;63};64 65int array5_3[Fibonacci3<5>::value == 5? 1 : -1];66int array10_3[Fibonacci3<10>::value == 55? 1 : -1];67