调用模板函数时,可以省略函数名后面的类型吗?
例如,考虑一下这个功能
template
<typename T> void f(T var){...};
可以这样简单地调用它:
int x = 5;
F(X);
或者我必须包括类型?
int x = 5;
f<int>(x);
Zif*_*fre 17
每当编译器可以从函数参数推断出模板参数时,就可以将它们排除在外.这也是一种很好的做法,因为它可以使您的代码更易于阅读.
此外,您只能保留结尾的模板参数,而不是开头或中间:
template<typename T, typename U> void f(T t) {}
template<typename T, typename U> void g(U u) {}
int main() {
f<int>(5); // NOT LEGAL
f<int, int>(5); // LEGAL
g<int>(5); // LEGAL
g<int, int>(5); // LEGAL
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |