1 /*
2  * It is known that this code not compiled by following compilers:
3  *   gcc 3.4.1
4  *   gcc 4.1.1
5  *
6  * It is known that this code compiled by following compilers:
7  *   gcc 2.95.3
8  *   gcc 3.3.3
9  *
10  *   MSVC 6
11  *   MSVC 8 Beta
12  */
13 
14 /*
15  * Indeed this code is wrong: explicit template specialization
16  * have to appear out-of-class.
17  *
18  */
19 
20 struct A
21 {
22   private:
23     struct B
24     {
25         template <typename T>
26         static void f( T& ) {}
27 
28         template <bool V>
29         struct C
30         {
31             template <typename T>
32             static void f( T& ) {}
33         };
34 
35         template <>
36         struct C<true>
37         {
38             template <typename T>
39             static void f( T& ) {}
40         };
41     };
42 };
43 
44