c++ - 识别 C++ 模板约束

标签 c++ templates constraints

所以我需要一些帮助/提示来识别 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由于 T sum = a[0] 必须是可复制构造的.
  4. T必须允许 t += s对于 T 类型的对象由于sum += a[i] .
  5. T因为 sum/size 必须能被整数整除.
  6. 除法的结果必须是 T或者必须至少隐式​​转换为 T因为函数返回 T .

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

相关文章:

ios - UIScrollView 的右 anchor 不适用

c++ - 类对象作为 vector 元素,析构函数被调用太多次

c++ - boost 序列化 : Serializing a tree with root memory management

c++ - 允许在 Cmake 中相互依赖

c++ - 有没有办法分解指向函数的模板化指针?

sql - 防止在SQL中插入重复信息

android - 在 Qt 上构建 Android 应用程序时出错

C++ 复合模板类工厂

c++ - 使用额外的不可推导模板参数重载函数是否有效?

ios - 完成所有行后如何停止uitableview