c – 任何向量的专用模板
发布时间:2020-12-16 10:20:16 所属栏目:百科 来源:网络整理
导读:我有一个模板方法,有两个专用版本,用于类型bool和vector string. 基础版: template class T const T InternGetValue(const std::string pfad) const{ ... } 专业版: template const bool InternGetValue(const std::string pfad) const{ ...} template con
我有一个模板方法,有两个专用版本,用于类型bool和vector< string>.
基础版: template <class T> const T InternGetValue(const std::string& pfad) const { ... } 专业版: template <> const bool InternGetValue(const std::string& pfad) const { ... } template <> const std::vector<std::string> InternGetValue< std::vector<std::string>>(const std::string& pfad) const { ... } 现在我想实现一个将接受所有类型的向量< aritmethic_data_type>的特化.像vector< double>矢量<诠释>或矢量< float>. 我可以通过为上述类型编写重载来实现这一点,但我有兴趣通过另一个专业化实现我的目标. 这是我到目前为止所尝试的(导致错误’非法使用显式模板参数’): template <class T> const std::vector<T> InternGetValue< std::vector<T>>(const std::string& pfad,typename boost::enable_if<boost::is_arithmetic<T>>::type* dummy = 0) const { } 解决方法
我认为std :: enable_if和std :: is_integral可以解决这个问题:
template<typename T> std::vector<typename std::enable_if<std::is_integral<T>::value,T>::type> f(const std::string& d); 如果std ::没有它们,那么使用boost ::如果可以的话.它有它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读