簡體   English   中英

std :: array-like類復制構造函數

[英]std::array-like class copy constructor

我正在為GPU編寫代碼,所以我不能使用STL類,因為方法需要特殊的注釋才能在GPU上運行。 因此,我正在重新實現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];
  }
};

對於簡單的T還可以,但是有一種類型需要調用復制構造函數,而不是賦值運算符。 我如何讓編譯器復制構造數組中的每個元素?

我如何讓編譯器復制構造數組中的每個元素?

它已經會了。 這正是默認副本構造函數將在此處執行的操作。 因此,請勿自己提供或明確提供默認值:

Few(Few const& ) = default;

似乎使用new-placed運算符已解決。 我不確定這是否完全符合C ++標准,但這里是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM