Lehet, hogy a g++ nem fogja meg, de a statikus kód analízis biztos, ilyen kódnak nem lenne szabad kimennie.
Amúgy azt gyanítom, hogy a különbség az, hogy a && operátornál van short circuiting, a sima &-nél nincs, és a key_data_->label() így elszáll, ami amúgy már önmagában is rossz design (pont emiatt...).