我编写了一些将迭代器作为参数的算法。我想要这些迭代器的名称向用户反映它们表示范围的事实,所以我将它们命名为:
template < typename T >
void foo( T begin_i, T end_i ) {
// ...
}
我也希望在我的代码中使用这些参数,但在实现名称begin_i
和end_i
的上下文中,不能反映它们的用途,因此我需要为它们命名别名。这是什么参考,对吧?
template < typename T >
void foo( T begin_i, T end_i ) {
T& context_dependent_name1 = begin_i;
T& context_dependent_name2 = end_i;
// Code using aliases
}
这适用于我,但隐藏初始名称begin_i
,end_i
会很不错。
我的问题是:
答案 0 :(得分:4)
另一种方法是在声明中使用一个名称,在定义中使用另一个名称:
template <typename T> void foo(T begin_i, T end_i);
稍后或以.inl为例
template<typename T>
void foo(T context_dependent_name1, T context_dependent_name2) {
// Implementation
}
虽然可能会为参数名称不匹配的某些文档工具发出警告。