は、次のコードを考えてみん:削除されたコンストラクタは - MSVCはエラーを報告し、クランはない
class SILPassPipelinePlan final {
public:
SILPassPipelinePlan() = default;
~SILPassPipelinePlan() = default;
SILPassPipelinePlan(const SILPassPipelinePlan &) = default;
SILPassPipelinePlan(SILPassPipelinePlan &&) = delete;
SILPassPipelinePlan x() {
SILPassPipelinePlan P;
return P;
}
};
int main() {
return 0;
}
MSVCは、次のエラーが報告されます
1>consoleapplication2.cpp(13): error C2280: 'SILPassPipelinePlan::SILPassPipelinePlan(SILPassPipelinePlan &&)': attempting to reference a deleted function
1>consoleapplication2.cpp(8): note: see declaration of 'SILPassPipelinePlan::SILPassPipelinePlan'
クランとGCCにはありません。
仕様の観点からは、どのコンパイラが正しいですか?これはMSVCバグかClangバグですか?
MSVCは最新のVisual Studio 2015 Update 3のもので、Clangはバージョン3.9.0です。
どの '-std'フラグをClangとGCCに渡していますか?移動コンストラクタの削除は、C++ 11とC++ 14の間で重要な変更を受けました。 – Angew
@Angew特定のフラグはありません。ここで試してみてください:http://rextester.com/WJMW74714 –
rextesterリンクに基づいて、 '-std = C++ 14'を使っています。この情報を質問に追加する必要があります。 – Angew