加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 ::如果可以的话.它有它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读