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