Files
clang-p2996/clang/test/CXX/temp/temp.param/p1.cpp
Douglas Gregor 0693defea9 When we run into a template parameter that should have a default
argument but doesn't (because previous template parameters had default
arguments), clear out all of the default arguments so that we maintain
the invariant that a template parameter has a default argument only if
subsequence template parameters also have default arguments.
Fixes a crash-on-invalid <rdar://problem/8913649>.

llvm-svn: 124345
2011-01-27 01:40:17 +00:00

13 lines
558 B
C++

// Suppress 'no run line' failure.
// RUN: %clang_cc1 -fsyntax-only -verify %s
template<template<> class C> class D; // expected-error{{template template parameter must have its own template parameters}}
struct A {};
template<class M,
class T = A, // expected-note{{previous default template argument defined here}}
class C> // expected-error{{template parameter missing a default argument}}
class X0 {}; // expected-note{{template is declared here}}
X0<int> x0; // expected-error{{too few template arguments for class template 'X0'}}