关于make_pair(1, “Test”)为什么有错:
  1   先声明一些东西:
  template   <typename   T1,   typename   T2>
  struct   pair
  {
      T1   first;
      T2   second;
      //     …
  };  
  template   <typename   T1,   typename   T2>
  pair<T1,   T2>   make_pair(T1   const&,   T2   const&);  
2 当调用make_pair(1, “Test”)时
      2.1   类型推导
              #1   T1   =   int;
              #2   由于”Test”的类型是char   const[5],
                    而且函数参数T2   const&是引用,
                    所以T2   =   char   const[5]
      2.2   实例化函数
      pair<int,   char   const[5]>   make_pair<>(int   const&,   char   const   (const&)[5]);  
3 实例化pair<int, char const[5]>类型导致:
      struct   pair<>
      {
          int   first;
          char   const   second[5];
          //…
      };
      这个类型根本就不可能用来生成对象,因为你
      无法初始化常数数组成员。  
  4   实例化失败导致编译错误:
  template   <typename   T1,   typename   T2>
  pair<T1,   T2>   make_pair(T1   const&   t1,   T2   const&   t2)
  {
      return   pair<T1,   T2>(t1,   t2);     //   无法构造pair对象,见上面3的描述
                    ^^^^^^^^^^^^^^^^^^^^^
  }
I like this internet site because so much utile material on here : D.