VS2015 C++コンパイラをテストしているときに、default
キーワードで奇妙なバグがありました。私が行う場合: 'ダミー::ダミー(constのダミー&)':ダミー」の宣言を参照してください。削除機能
ノートを参照しようとVS2015の `default`キーワードを扱う際に起こりうるバグC++
struct Dummy
{
Dummy() = default;
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
は私が
エラーC2280を取得します: :ダミー」
しかし、私は空のコンストラクタを使用している場合
struct Dummy
{
Dummy() {}
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
コードがコンパイルされます。 g++またはclangで最初の例を実行するとエラーは発生しません。
なぜVS2015でデフォルトのコンストラクタを使用すると、g ++やclangにないコピーコンストラクタを使用しようとしますか?
あなたは 'const Dummy&r2 {Dummy()};'から何を得るのですか? –
関連項目:[コピー/移動の削除と明示的に削除されたコピー/移動コンストラクタ](http:// stackoverflow。com/questions/20589622) –
こちらをご覧くださいhttp://stackoverflow.com/questions/31264984/c-compiler-error-c2280-attempting-to-reference-a-deleted-function-in-visual –