[英]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.