typedef pair eventType; 为什么编译出现异常呢

typedef pair<TObject*, eventHandleType> eventType; 为什么编译出现错误呢


class TObject
    {
    public:
        TObject() { }
         virtual ~TObject() { }
     };

 template <typename RT = void, typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void, typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void, typename T9 = void, typename T10 = void>
     class TEvent
     {
     public:
         /**
          * @brief 事件类型定义
          */
 
 typedef RT (TObject::*eventHandleType)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
 public: 
 typedef TEvent type; 
 typedef pair<TObject*, eventHandleType> eventType; 
 enum { argNum = 10 }; 
 private: 
  eventType _event; 
 public: 
 TEvent() { _event = make_pair<TObject*, eventHandleType>(0, 0); } 
 TEvent(TObject* obj, eventHandleType e) { _event = make_pair<TObject*, eventHandleType>(obj, e); } 
 TEvent(eventType& val):_event(val) { } 
 TEvent(TEvent& ref) { _event = (eventType)ref; } 
 void assign(TObject* obj, eventHandleType e) { _event = make_pair<TObject*, eventHandleType>(obj, e); } 
 bool valid() { return _event.first && _event.second; } 
 TEvent& operator = (eventType& e) { _event = e; return *this; } 
 operator eventType() { return _event; } 
 bool operator == (TEvent& ref) { return this == &ref ? true : _event == (eventType)ref; } 
 bool operator == (eventType& e) { return _event == e; }