假设我们有一个模板函数:
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);
第二种情况对我来说是有意义的,但是我们什么时候以下面给出的方式进行显式模板实例化(实例化而不调用char类型的函数)max
:
template char max(char a, char b);
我们能从中获得什么?