blob: 8821501600999e3d41924f5a4b8f750217e4c888 [file] [log] [blame]
Francois Pichetaf0f4d02011-08-14 03:52:19 +00001// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s
2
3
4class A {
5public:
6 template <class U>
7 A(U p) {
8 }
9 template <>
10 A(int p) { // expected-warning{{explicit specialization of 'A' within class scope in a Microsoft extension}}
11 }
12
13 template <class U>
14 void f(U p) {
15 }
16
17 template <>
18 void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope in a Microsoft extension}}
19 }
20
21 void f(int p) {
22 }
23};
24
25void test1()
26{
27 A a(3);
28 char* b ;
29 a.f(b);
30 a.f<int>(99);
31 a.f(100);
32}
33
34
35
36
37template <class T>
38class B {
39public:
40 template <class U>
41 B(U p) {
42 }
43 template <>
44 B(int p) { // expected-warning{{explicit specialization of 'B<T>' within class scope in a Microsoft extension}}
45 }
46
47 template <class U>
48 void f(U p) {
49 T y = 9;
50 }
51
52
53 template <>
54 void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope in a Microsoft extension}}
55 T a = 3;
56 }
57
58 void f(int p) {
59 T a = 3;
60 }
61};
62
63void test2()
64{
65 B<char> b(3);
66 char* ptr;
67 b.f(ptr);
68 b.f<int>(99);
69 b.f(100);
70}
71