我有一个函数,为了简化一点,看起来像这样:
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
)。但我很好奇是否有适当的习惯用语。
我很清楚,在我的特殊情况下,它不重要。今天这纯粹是教学法。
答案 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;
}