次の 2 つの関数は異なるアセンブリを生成します。これは、それらが異なることを示しています。誰かが私に彼らがどのように違うのか教えてもらえますか? また、func2 の関数ローカル静的変数の初期化はスレッドセーフですか? 答えがコンパイラに依存する場合、最も一般的なコンパイラが func2 でどのように動作するかを知りたいです。
int func1(int val)
{
const auto impl = [](int v)
{
return v * 10;
};
return impl(val);
}
int func2(int val)
{
static const auto impl = [](int v)
{
return v * 10;
};
return impl(val);
}