C++ 模板<;类迭代器>;这里是预定义的迭代器还是可以使用任何名称?
以代码为例:C++ 模板<;类迭代器>;这里是预定义的迭代器还是可以使用任何名称?,c++,templates,iterator,C++,Templates,Iterator,以代码为例: template< class Iterator> Iterator calc( Iterator a , Iterator b ){ if( *a == 'c' && a != b ) ++a ; return a ; } 这两个例子都一样吗?这两个例子完全一样,是的。迭代器的名称Iterator只会让代码的读者更清楚地知道calc希望传递的是哪种类型的参数,而T并不特别有启发性。无论哪种方式,模板参数的名称只是一个名称——它没有其
template< class Iterator>
Iterator calc( Iterator a , Iterator b ){
if( *a == 'c' && a != b ) ++a ;
return a ;
}
这两个例子都一样吗?这两个例子完全一样,是的。迭代器的名称
Iterator
只会让代码的读者更清楚地知道calc
希望传递的是哪种类型的参数,而T
并不特别有启发性。无论哪种方式,模板参数的名称只是一个名称——它没有其他意义
< C++概念提案(你最初把你的问题标记为,但与问题不严格相关)会让你写出一些更有意义的东西:
template <Input_iterator T>
T calc(T a, T b) { ... }
模板
T计算(ta,tb){…}
<>这将影响<代码> Calc < /C> >的超载分辨率,因此<>代码> Calc(1, 2)现在甚至不考虑这个函数——而不是在编写<代码> *<代码>时抛出编译错误。
但即使在这里,T
也只是一个名字,仅此而已
template <Input_iterator T>
T calc(T a, T b) { ... }