I'm porting Windows code to Linux. So, i have a code
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_);
}
};
and MSVC compiling it without problems, but g++ show me error: explicit specialization in non-namespace scope ‘struct am3::model::contract::Provider’
I tried overload it, specialize function after struct body and more, (Specialization of templated member function in templated class etc, etc..) but I'm stuck now. Has anyone an idea, how to do it? Many thanks in advance!