0

所以我需要一些帮助/提示来识别 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;
}

关于每个约束或约束组的简短解释会很好。谢谢您的帮助。

4

2 回答 2

4
  1. T必须是对象类型而不是引用,因为const T a[]必须是有效的参数声明。
  2. T必须是可移动或可复制的,因为它是返回类型。
  3. T由于 .必须是可复制构造的T sum = a[0]
  4. T由于.必须允许t += s类型的对象。Tsum += a[i]
  5. T必须能被整数整除,因为sum/size.
  6. devision 的结果必须是 aT或必须至少可以隐式转换为,T因为函数返回 a T
于 2013-07-24T13:14:47.247 回答
0

1-2。a 必须是数组,类型为 T。
3. size 必须是 int。
4.尺寸必须小于或等于长度a。
5. 变量接收返回必须是 T 类型。
6. 数组长度必须为 1 或更大。

于 2013-07-24T13:10:50.800 回答