所以我需要一些帮助/提示来识别 C++ 中的模板约束。下面是一些包含 6 个约束的示例代码。我可以找到明显的,但无法识别所有 6 个...
template <class T>
T avg(const T a[], int size)
{
T sum = a[0];
for (int i = 1; i < size; i++)
sum += a[i];
return sum/size;
}
关于每个约束或约束组的简短解释会很好。感谢您的帮助。
最佳答案
-
T
必须是对象类型而不是引用,因为const T a[]
必须是有效的参数声明。 -
T
必须是可移动或可复制的,因为它是返回类型。 -
T
由于T sum = a[0]
必须是可复制构造的. -
T
必须允许t += s
对于T
类型的对象由于sum += a[i]
. -
T
因为sum/size
必须能被整数整除. - 除法的结果必须是
T
或者必须至少隐式转换为T
因为函数返回T
.
关于c++ - 识别 C++ 模板约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834780/