mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 01:55:08 +00:00
1cbdf932b4
No other compiler accepts this as an extension, not even in permissive mode. We're not doing anyone any favors by allowing this, and it's unlikely to be at all common, even in Clang-only code, in the wild.
24 lines
1.3 KiB
C++
24 lines
1.3 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
|
|
|
|
template<class> class Foo {
|
|
template<class UBar // expected-error {{expected ';' after class}}
|
|
// expected-note@-1 {{'UBar' declared here}}
|
|
void foo1(); // expected-error {{a non-type template parameter cannot have type 'class UBar'}}
|
|
// expected-error@-1 {{expected ',' or '>' in template-parameter-list}}
|
|
// expected-error@-2 {{declaration does not declare anything}}
|
|
};
|
|
|
|
Foo<int>::UBar g1; // expected-error {{no type named 'UBar' in 'Foo<int>'}}
|
|
|
|
class C0 {
|
|
public:
|
|
template<typename T0, typename T1 = T0 // missing closing angle bracket
|
|
struct S0 {}; // expected-error {{'S0' cannot be defined in a type specifier}}
|
|
// expected-error@-1 {{cannot combine with previous 'type-name' declaration specifier}}
|
|
// expected-error@-2 {{expected ',' or '>' in template-parameter-list}}
|
|
// expected-error@-3 {{declaration does not declare anything}}
|
|
C0() : m(new S0<int>) {} // expected-error {{expected '(' for function-style cast or type construction}}
|
|
// expected-error@-1 {{expected expression}}
|
|
S0<int> *m; // expected-error {{expected member name or ';' after declaration specifiers}}
|
|
};
|