识别C++模板约束

Identifying C++ Template Constraints

本文关键字:约束 C++ 识别      更新时间:2023-10-16

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

对每个约束或约束组做一个简短的解释会很好。谢谢你的帮助。

  1. T必须是对象类型,而不是引用,因为const T a[]必须是有效的参数声明
  2. T必须是可移动的或可复制的,因为它是返回类型
  3. 由于T sum = a[0]T必须是可复制的
  4. 由于sum += a[i]T必须允许类型为T的对象使用t += s
  5. 由于sum/sizeT必须可以被整数整除
  6. 分离的结果必须是T,或者必须至少隐式转换为T,因为函数返回T

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