GCC错误:非命名空间范围中的显式专门化(绝望的帮助) [英] GCC error: explicit specialization in non-namespace scope (desperate for help)

查看:1159
本文介绍了GCC错误:非命名空间范围中的显式专门化(绝望的帮助)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

很抱歉要问这么多,但你能帮我移植下面的代码吗?我知道诅咒的标准不允许非名称范围的显式专门化,我应该使用重载,但我只是无法找到一种方法来应用这种技术在这种特殊情况:(

I'm sorry to ask so much, but can you please help me to port the following code? I know the cursed standard doesn't allow explicit specialization in non-namescape scope and I should use overloading, but I just can't find a way to apply this technique in this particular case :(

class VarData
{
public:
    template < typename T > bool IsTypeOf (int index) const
    {
        return IsTypeOf_f<T>::IsTypeOf(this, index); // no error...
    }

    template <> bool IsTypeOf < int > (int index) const // error: explicit specialization in non-namespace scope 'class StateData'
    {
        return false;
    }

    template <> bool IsTypeOf < double > (int index) const // error: explicit specialization in non-namespace scope 'class StateData'
    {
        return false;
    }
};


推荐答案

class VarData
{
public:
    template < typename T > bool IsTypeOf (int index) const
    {
        return IsTypeOf_f<T>::IsTypeOf(this, index);
    }
};

template <> bool VarData::IsTypeOf < int > (int index) const
{
    return false;
}

template <> bool VarData::IsTypeOf < double > (int index) const
{
    return false;
}

这篇关于GCC错误:非命名空间范围中的显式专门化(绝望的帮助)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆