std :: array-like类复制构造函数

时间:2016-12-04 17:52:24

标签: c++ arrays c++11

我正在为GPU编写代码,因此我无法使用STL类,因为方法需要特殊的注释才能在GPU上运行。因此,我重新实现{\o 3, \a 2, \r 2, \e 1, \l 1, \m 1, \n 1, \t 1} ,并在其方法上使用适当的注释(std::array)。我现在遇到的问题是我的复制构造函数调用成员上的赋值运算符:

INLINE

对于简单的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]; } }; ,它可以正常工作,但是有一种类型需要调用复制构造函数,而不是赋值运算符。如何让编译器复制构造数组中的每个元素?

2 个答案:

答案 0 :(得分:8)

  

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

它已经存在了。这正是默认的拷贝构造函数在这里要做的。所以,不要自己提供,或明确默认:

Few(Few const& ) = default;

答案 1 :(得分:-3)

似乎使用了placement-new运算符。我不确定这是否完全符合C ++标准,但现在是:

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