DPCT1055

メッセージ

サイズ 1 のベクトルタイプは、対応する基本タイプに移行され、継承することはできません。コードを書き換える必要があります。

説明

この警告メッセージは、オリジナルコードでサイズ 1 のベクトルタイプがクラスや構造体に継承されていると出力されます。サイズ 1 のベクトルタイプは DPC++ の対応する基本タイプに移行されており、基本タイプは継承できないためコードを書き換える必要があります。

修正方法の提案

クラス/構造体で、対応する基本タイプ (例えば、int1 の場合は int) を持つ新しいフィールドを宣言し、必要な演算子をオーバーライドできます。

例えば、以下のオリジナル CUDA* コードについて考えてみます。


1class MyClass : int1 { 
2    ... 
3};

このコードは、以下の SYCL* コードに移行されます。


1 /* 
2 DPCT1055:0: Vector types with size 1 are migrated to the corresponding 
3 fundamental types, which cannot be inherited. You need to rewrite the code. 4*/ 
5 class MyClass : int { 
6    ... 
7};

このコードは次のように書き換えられます。


1class MyClass { 
2public: 
3    int x; 
4    MyClass operator+(const MyClass& y) {    ... } 
5    MyClass operator=(const MyClass& y) {    ... } 
6    ... 
7};