C:错误“非命名空间范围的显式专业化”

C:错误“非命名空间范围的显式专业化”,第1张

概述template<typename T1, typename T2>class Bimap {public: class Data { private: template<typename T> Data& set(T); template<> Data& set<T1>(typename T1 v) { /*...*/ } };};
template<typename T1,typename T2>class Bimap {public:    class Data {    private:        template<typename T> Data& set(T);        template<> Data& set<T1>(typename T1 v) { /*...*/ }    };};

这给我错误

错误:非命名空间范围中的显式专业化Bimap< T1,T2> :: Data’

我明白错误在说什么但为什么我不能这样做?我该怎么解决?

解决方法 一种方式忘记模板,重载:
Data& set(T1 v) { /*...*/ }

但这里有一些我有时候会使用的技巧

你可以在类中专门设计类模板:

class {    template<typename T>    struct function_ {        static voID apply(T);    };    template<>    struct function_<int> {        ...    };    template<typename T>    voID function(T t) { return function_<T>::apply(t); }
总结

以上是内存溢出为你收集整理的C:错误“非命名空间范围的显式专业化”全部内容,希望文章能够帮你解决C:错误“非命名空间范围的显式专业化”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存