【发布时间】:2017-06-21 02:22:57
【问题描述】:
我想概括一个函数。简单地说,我有一个std::string s,我用解析器处理它,生成一个std::vector<std::string>(它是"1, 2, 3"中的一个列表),该函数应该返回一个std::vector<T>,T限制为double或int。
向量应该包含转换后的值。
我坚持使用std::transform 的最后一个参数,因为它应该在std::stod 和std::stoi 之间切换。我正在寻找的解决方案是使用 模板元编程 魔法,而不是 if (std::is_same<T,int>::value)。
有什么提示吗?
template <class T>
auto get_vector(std::string s) -> std::vector<T>
{
std::vector<T> v;
auto tmp = split(s);
std::transform(tmp.begin(), tmp.end(), std::back_inserter(v), ??);
return v;
}
【问题讨论】:
-
为
double添加专业化?
标签: c++ c++11 templates vector