C++ 为什么';这个模板代码不能工作吗?

C++ 为什么';这个模板代码不能工作吗?,c++,templates,C++,Templates,他们告诉我用模板来计算总数。为什么这样不行?谢谢 template <typename A, typename B, typename C> auto add(A a, B b, C c = a + b) -> decltype(c) { return c; } 模板 自动添加(A、B、C=A+B)->取消类型(C){ 返回c; } 我想C++11说过可以在声明参数后使用它们。那么为什么这不起作用呢?您不能使用参数作为默认值。另外,模板类型推断也不是这样工作的 就这

他们告诉我用模板来计算总数。为什么这样不行?谢谢

template <typename A, typename B, typename C>
auto add(A a, B b, C c = a + b) -> decltype(c) {
    return c;
}
模板
自动添加(A、B、C=A+B)->取消类型(C){
返回c;
}

我想C++11说过可以在声明参数后使用它们。那么为什么这不起作用呢?

您不能使用参数作为默认值。另外,模板类型推断也不是这样工作的

就这样写吧:

template <typename A, typename B>
auto add(A a, B b) -> decltype(a + b) {
    return a + b;
}
模板
自动添加(A,B)->取消类型(A+B){
返回a+b;
}

希望C++能很快得到返回类型。< /p>我在函数中自动使用的是DECKET吗?<代码> > DeCype(A+C)< /Case>一个类型> @戴维,只有当你不能预测表达式的结果类型时,就像涉及模板化参数的表达式的情况一样。您不可能知道这些参数是

float
s、
int
s、两者的混合还是其他。