>>91
規格ではネストされたクラス内での明示的特殊化は禁止されているけど
部分特殊化はOKなので、

class X {
  template <typename T, class U = void> class Y {};
  template <typename T>
  class Y< T
      , typename boost::enable_if<
         typename boost::is_same< T, int>
       > > {};
};

のようにenable_ifとis_sameを使って書くといいっぽい(初心者スレから一部拝借w)
VCでコンパイル可能なのはmsの独自拡張でgccの方が正しいとのこと