省略 C++ 模板中的参数

2024-01-26

调用模板函数时可以省略函数名后面的类型吗?

作为示例,请考虑以下函数:

template<typename T>
void f(T var){...}

简单地这样调用就可以了吗:

int x = 5;  
f(x);

Or do I have包括类型?

int x = 5;  
f<int>(x);

只要编译器可以从函数参数推断出模板参数,就可以将它们排除在外。这也是一个很好的做法,因为它将使您的代码更易于阅读。

另外,您只能保留末尾的模板参数,而不能保留开头或中间的模板参数:

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

省略 C++ 模板中的参数 的相关文章

随机推荐