0

C++ テンプレート タスク内に仮想関数があり、Visual Studio 2015 でコンパイルすると (デバッグ/リリースと x86/x64 のすべての組み合わせを試しました)、次のコード行でコンパイラ エラー C1001 で一貫して失敗します。

e_Ty *d(new e_Ty[l]);

e_Tyクラスのテンプレート パラメータはどこにありますか。e_Tyこのエラーは、テンプレート クラスを に設定して使用した場合にのみ発生しstd::pair<const int &, int &>ます。これが機能しない正当な理由はありますか、それとも MSVC のバグですか?


編集

ノート:

  • l事前に宣言された (関数呼び出しの結果として値が割り当てられた) ローカル変数です。
  • 無効化の最適化、使用auto、割り当てスタイルの初期化の使用を試みましたが、どれも機能しませんでした。
  • e_Tyが の場合、コードは正常にコンパイルされますint
4

2 に答える 2

4

内部コンパイラ エラーであるICE常にバグです。

Microsoft Connect 経由で報告してください。


問題のコード、

e_Ty *d(new e_Ty[l]);

l、適切なヘッダーが含まれているかどうかなどによって、正しい場合と正しくない場合があります。文脈が少なすぎて言えません。TC で指摘されているように、参照を初期化する必要があるため、参照e_Tyとしては無効です。しかし、それはICEには関係ありません。std::pair

于 2016-06-02T21:40:58.423 に答える