可能想要引用的C ++模板化函数

时间:2015-10-08 19:09:17

标签: c++ templates c++14

我有一个函数,为了简化一点,看起来像这样:

template<typename T>
T DoStuff(const vector<T>& data) {
    T ret_data;
    for (const T datum : data) { /* ... */ }
    return ret_data;
}

通常T是int或字符串。如果这不是模板化代码,我会在该for循环中使用const string&const int。当然,我可以使用int引用(const T& datum)。但我很好奇是否有适当的习惯用语。

我很清楚,在我的特殊情况下,它不重要。今天这纯粹是教学法。

2 个答案:

答案 0 :(得分:4)

没有惯例或习惯用语,没有。一般来说,我只接受引用∀T,但如果你真的想要,你可以专注于内置类型。

答案 1 :(得分:0)

即使使用const引用也是一种琐碎/可接受的方式, 你可以使用boost中的call_traits

并且做:

template<typename T>
T DoStuff(const vector<T>& data) {
    T ret_data;
    for (typename boost::call_traits<T>::param_type datum : data) { /* ... */ }
    return ret_data;
}