关于template的有关问题,请各位不吝赐教

在线等关于template的问题,请各位不吝赐教
如下代码:
C/C++ code
#include <iostream>
template<typename T> class A
{
public:
    A():point_ptr(creat_point){}
    ~A(){delete point_ptr;}
private:
    template<typename Type> struct Point;
    Point<T> *point_ptr;
    Point<T> * creat_point();
};
template<typename T>  template<typename Type> struct A<T>::Point 
{
    Type x,y;
};
template<typename T>  typename A<T>::template Point<T> *A<T>::creat_point()
{
    return new Point<T>();
}
int main()
{
    return 0;
}

在gcc中编译通过,在vs2010下编译提示:unable to match function definition to an existing declaration
请各位不理赐教,多多指教

------解决方案--------------------
这个错误意识是: struct Point怎么办的?无法找到定义啊
------解决方案--------------------
各家编译器肯定有自己的特点,不要强求,就好像那些一连串++i和i++的运算结果一样的,编译器不同,结果就可能不同,标准又没有规定你这个必须像GCC那样编译。
------解决方案--------------------
template<typename T> 
class A
{
public:
A():point_ptr(creat_point()){}
~A(){delete point_ptr;}
private:
template<typename Type> 
struct Point
{
Type x, y;
};
Point<T>* point_ptr;
Point<T>* creat_point()
{
return new Point<T>();
}
};

vs2005
------解决方案--------------------
给这模版语法跪了,估计是VC的bug
另外模版函数真没分开写的意义
------解决方案--------------------
探讨

给这模版语法跪了,估计是VC的bug
另外模版函数真没分开写的意义