所以我需要一些帮助/技巧来识别C ++中的模板约束。这是一些包含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必须是可移动的或可复制的,因为它是返回类型。
由于TT sum = a[0]必须是可复制构造的。
由于Tt += s必须允许T用于sum += a[i]类型的对象。
由于Tsum/size必须被整数整除。
除法的结果必须是T或至少可以隐式转换为T,因为该函数返回T

关于c++ - 识别C++模板约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17834780/

10-11 23:21
查看更多