将参数传递给模板

时间:2016-12-30 14:34:50

标签: c++ templates

我有这个模板:

template<class a>
    a multiply(a x, a y){
        return x*y;
    }

如何传递不同类型的参数? (例如int和float)

2 个答案:

答案 0 :(得分:5)

这取决于你想要达到的目标。您可以明确指定模板参数(而不是让它被推断),这将导致&#34;不匹配&#34;转换为该类型的参数。

本回答中的所有示例均假设int i; float f;

例如,你可以这样做:

float res = multiply<float>(i, f);  //i will be implicitly converted to float

或者这个:

int res = multiply<int>(i, f);  //f will be implicitly converted to int

甚至这个:

double res = multiply<double>(i, f);  //both i and f will be implicitly converted to double

如果你真的想接受不同类型的参数,你需要以某种方式处理返回类型规范。这可能是最自然的方式:

template <class Lhs, class Rhs>
auto multiply(Lhs x, Rhs y) -> decltype(x * y)
{
  return x * y;
}

答案 1 :(得分:1)

像往常一样调用函数:

int x = 2;
int y = 3;
multiply(x,y);