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
20struct 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