Visual Studioのコンパイラ(MSVC 2015)は、次のコードの簡単な作品をコンパイルすることができません:ラムダのラムダはテンプレートではありませんか?
int main() {
auto foo = [](auto callback) {
callback(int{});
};
auto rexs = [&foo]() {
foo([](auto tg) {});
};
}
それは内部コンパイラエラーをbarfs:ときにエラーC1001
を与えるのが好き++
fatal error C1001: An internal error has occurred in the compiler.
VCコンパイルされたコードにはエラーが含まれています(つまり、プログラマが間違いを犯しましたが、VC++はコードの間違いを完全に認識できません)。
しかし、すべての視点から見ると、私のコードは標準に準拠しているように見え、VC++バグのようです。私は正しいと思いますか?
"コンパイラに内部エラーが発生しました。"再現コードが有効かどうかは常にバグ(コンパイラ/ツールチェーン内)です。しかし、コードが有効な場合、バグはより深刻です。 – user2079303
'VC++は、コンパイルされたコードにエラーがある場合(つまり、プログラマーが間違いを犯したが、VC++がコードの間違いを完全に認識しない場合)にエラーC1001を出してしまいます。それが本当であっても、それはまだコンパイラエラーです。もしVSがコードが間違っていると思うなら、それはそれを考える理由があるはずです。 – deviantfan
@ user2079303私は自分のプロジェクトで何度もC1001を見たことがあります。小さな文法の間違いをしても、私のコンパイラをもう叱る気にはなりません。 – Bernard