C++ 嵌套在模板结构中的模板函数,g++;专门化误差

C++ 嵌套在模板结构中的模板函数,g++;专门化误差,c++,templates,visual-c++,gcc,nested,C++,Templates,Visual C++,Gcc,Nested,我正在将Windows代码移植到Linux。所以,我有一个密码 template <typename PROPERTY,typename T_COORDINATE=am3::model::Coordinates> struct Provider { virtual PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point,const PROPERTY* const typeTrait

我正在将Windows代码移植到Linux。所以,我有一个密码

 template <typename PROPERTY,typename T_COORDINATE=am3::model::Coordinates>
  struct Provider
  {
    virtual PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point,const PROPERTY* const typeTrait)=0;
        virtual PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point)
        {
            const PROPERTY* const typeTrait_=nullptr;
            return this->GetState(point,typeTrait_);
        }
    template <typename T>
    PROPERTY GetState(am3::model::common::Point<T_COORDINATE>* point);
    template <>
    PROPERTY GetState<PROPERTY>(am3::model::common::Point<T_COORDINATE>* point)
    {
      const PROPERTY* const typeTrait_=nullptr;
      return this->GetState(point,typeTrait_);
    }
  };
模板
结构提供程序
{
虚拟属性GetState(am3::model::common::Point*Point,const-PROPERTY*const-typeTrait)=0;
虚拟属性GetState(am3::model::common::Point*Point)
{
常量属性*const typeTrait_u2;=nullptr;
返回此->获取状态(点,类型);
}
样板
属性GetState(am3::model::common::Point*Point);
样板
属性GetState(am3::model::common::Point*Point)
{
常量属性*const typeTrait_u2;=nullptr;
返回此->获取状态(点,类型);
}
};
MSVC编译它没有问题,但是 g++演示错误:非命名空间范围“struct am3::model::contract::Provider”中的显式专门化

我试着重载它,在结构体之后专门化函数等等, (等,等…)但我现在卡住了。
有人有主意吗,怎么做?非常感谢

正如您链接的问题的答案所说:
如果不专门化类,就不能专门化成员。看一看,总的来说,我也在这一页上。当我尝试“template[…]template”时,错误是:错误:函数模板部分专用化“GetState”不允许是的,您不能部分专用化函数模板,正如我在前面评论中发布的链接问题所建议的,您可以将其转换为带有静态函数的模板类。但我担心您需要更改在其余代码中调用它的方式。这是我的一般问题-我不能更改其余代码,因为我的代码只是众多库中的一个。但是非常感谢你的建议/