• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 
3 // Template type parameters.
4 typedef unsigned char T;
5 template<typename T = T> struct X0 { };
6 template<> struct X0<unsigned char> { static const bool value = true; };
7 int array0[X0<>::value? 1 : -1];
8 
9 // Non-type template parameters.
10 const int N = 17;
11 template<int N = N> struct X1 { };
12 template<> struct X1<17> { static const bool value = true; };
13 int array1[X1<>::value? 1 : -1];
14 
15 // Template template parameters.
16 template<template<class> class X0 = X0> struct X2 { };
17 template<> struct X2<X0> { static const bool value = true; };
18 int array2[X2<>::value? 1 : -1];
19