考虑代码:
template< class Iterator>
Iterator calc( Iterator a , Iterator b ){
if( *a == 'c' && a != b ) ++a ;
return a ;
}
class Iterator
是否重要,或者我们可以为其命名class T
吗?
template< class T>
T calc( T a , T b ){
if( *a == 'c' && a != b ) ++a ;
return a ;
}
这两个例子是否相同?
答案 0 :(得分:2)
两者完全一样,是的。名称Iterator
只是让代码的读者更清楚地了解了calc
期望传入的各种参数,而T
并不特别有启发性。无论哪种方式,模板参数的名称只是一个名称 - 它没有其他含义。
C ++概念提案(您最初将问题标记为,但与问题严格无关)将允许您编写实际上更有意义的内容:
template <Input_iterator T>
T calc(T a, T b) { ... }
这会影响calc
上的重载决策,这样calc(1, 2)
现在甚至不会考虑此函数 - 而不是在执行*a
时抛出编译错误。
但即使在这里,T
只是一个名字,仅此而已。