0
比方说,我们有一个模板功能:我们什么时候需要显式实例化一个模板函数?
template <class T> T max(T a, T b) { return a > b ? a : b; }
由于编译器不执行模板参数推导过程中的任何隐式类型转换,我们可以通过以下两种方法调用max(2, 5.5)
:
- 使用铸造:
max(static_cast<float>(2), 5.5f);
- 使用显式模板实例:
max<float>(2, 5.5);
第二种情况对我来说很有意义,但是当我们做了明确的模板实例在下面给出(实例而不字符类型调用函数max
):
template char max(char a, char b);
什么是我们实现退出它?
显式实例允许提供声明没有其他TU定义。 – Jarod42
^- 如果您的模板只能应用于一组有限的类型,这些类型都是事先已知的,这非常有用。 – StoryTeller