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