16

ご存知のように、一致する 2 つの文字列リテラルを比較すると、結果は等しくなります。

"hello" == "hello" //could be true or false

ラムダについても同じことが言えますか:

[](){} == [](){} //false - guaranteed?

コンパイラはこれを自由に評価できますか、それとも評価されることが保証されていfalseますか? それは合法ですか?上記は実際に何を比較していますか?

4

1 に答える 1

24

ラムダが等しいかどうかを比較することはできません。この小さなスニペットに表示されるのは、ラムダが関数ポインターに変換され、関数ポインターが比較されることです。これらの関数ポインターが同じである、または同じではないという保証はありません。つまり、結果は または のいずれtrueかになりますfalse

于 2012-12-20T11:12:42.667 に答える