templateクラス内クラスの呼び出し

クラス内クラス

template<class T>
class Class {
   class CInnerClass{
   };
};

class OuterClass{
   Class::CInnerClass* m_pClass;

   //template<class T>
   //Class<T>::CInnerClass* GetInnerClass(){return m_pClass;}//C4346 Error
   
   template<class T>
   typename Class<T>:CInnerClass* GetInnerClass(){return m_pClass;}//これでとおる
};

typenameを使わないといけないらしい。
知らなかったw