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> fA::B26 static void f( T& ) {} 27 28 template <bool V> 29 struct C 30 { 31 template <typename T> fA::B::C32 static void f( T& ) {} 33 }; 34 35 template <> 36 struct C<true> 37 { 38 template <typename T> fA::B::C39 static void f( T& ) {} 40 }; 41 }; 42 }; 43 44