brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 8317e7f Raw
41 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2template<typename> struct Y1; // expected-note{{template is declared here}}3template<typename, int> struct Y2;4 5// C++ [temp.param]p12:6template<class T1,7         class T2 = int> // expected-note{{previous default template argument defined here}}8  class B3;9template<class T1, typename T2> class B3;10template<class T1,11         typename T2 = float> // expected-error{{template parameter redefines default argument}}12  class B3;13 14template<template<class, int> class,15         template<class> class = Y1> // expected-note{{previous default template argument defined here}}16  class B3t;17 18template<template<class, int> class, template<class> class> class B3t;19 20template<template<class, int> class,21         template<class> class = Y1> // expected-error{{template parameter redefines default argument}}22  class B3t;23 24template<int N,25         int M = 5> // expected-note{{previous default template argument defined here}}26  class B3n;27 28template<int N, int M> class B3n;29 30template<int N,31         int M = 7>  // expected-error{{template parameter redefines default argument}}32  class B3n;33 34// Check validity of default arguments35template<template<class, int> class =// expected-note {{previous template template parameter is here}}36           Y1> // expected-error{{too many template arguments for class template 'Y1'}}37               // expected-note@-1 {{template template argument has different template parameters than its corresponding template template parameter}}38  class C1 {};39 40C1<> c1; // expected-note{{while checking a default template argument}}41