std ::类似阵列的类复制构造函数

std::array-like class copy constructor

本文关键字:复制 构造函数 std 阵列      更新时间:2023-10-16

我正在为GPU编写代码,所以我不能使用STL类,因为方法需要特殊注释才能在GPU上运行。因此,我正在使用其方法进行适当的注释(INLINE)重新完成std::array。我现在遇到的问题是我的复制构造函数调用成员的分配运算符:

template <typename T, Int n>
class Few {
  T array_[n];
 public:
  INLINE Few(Few<T, n> const& rhs) {
    for (Int i = 0; i < n; ++i) array_[i] = rhs.array_[i];
  }
};

适用于简单的T,但是有某种类型需要调用复制构造函数,而不是分配运算符。如何让编译器复制数组中的每个元素?

如何让编译器复制数组中的每个元素?

已经会。这正是默认复制构造函数将在此处做的。因此,只是不要自己提供一个或明确默认:

Few(Few const& ) = default;

似乎使用了使用位置新操作员。我不确定这是C 标准完全合法的,但这是:

  INLINE Few(Few<T, n> const& rhs) {
    for (Int i = 0; i < n; ++i) new (array_ + i) T (rhs.array_[i]);
  }