识别C ++模板约束

问题描述 投票:0回答:2

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

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

c++ templates constraints
2个回答
4
投票
  1. T必须是对象类型,而不是引用,因为const T a[]必须是有效的参数声明。
  2. T必须是可移动的或可复制的,因为它是返回类型。
  3. T由于T sum = a[0]而必须是可复制构造的。
  4. T由于t += s而必须允许T用于类型为sum += a[i]的对象。
  5. 由于T
  6. sum/size必须被整数整除。
  7. 除法的结果必须为T或至少可以隐式转换为T,因为该函数返回T

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.