作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个模板方法,它有两个针对 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
{
...
}
现在我想实现一个接受所有类型的vector<aritmethic_data_type>
的特化喜欢vector<double>
vector<int>
或 vector<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::
。它有它们。
关于c++ - 专门用于任何 vector 的模板<any_arithmetic_data_type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595243/
我有一个模板方法,它有两个针对 bool 类型的专门版本和 vector . 基本版本: template const T InternGetValue(const std::string& pfa
我是一名优秀的程序员,十分优秀!