18fbe78f6SDaniel Dunbar // RUN: %clang_cc1 -fsyntax-only -verify %s 2*c6e68daaSAndy Gibbs // expected-no-diagnostics 3a5d5c749SDouglas Gregor 4a5d5c749SDouglas Gregor // The scope of atemplate-parameterextends from its point of 5a5d5c749SDouglas Gregor // declaration until the end of its template. In particular, a 6a5d5c749SDouglas Gregor // template-parameter can be used in the declaration of subsequent 7a5d5c749SDouglas Gregor // template-parameters and their default arguments. 8a5d5c749SDouglas Gregor 9a5d5c749SDouglas Gregor template<class T, T* p, class U = T> class X { /* ... */ }; 10a5d5c749SDouglas Gregor // FIXME: template<class T> void f(T* p = new T); 11a5d5c749SDouglas Gregor 12a5d5c749SDouglas Gregor // Check for bogus template parameter shadow warning. 13a5d5c749SDouglas Gregor template<template<class T> class, 14a5d5c749SDouglas Gregor template<class T> class> 15a5d5c749SDouglas Gregor class B1noshadow; 16