У меня есть этот код:
void foo(void (*bar)()) {
bar();
}
int main() {
foo([] {
int x = 2;
});
}
Однако я волнуюсь, что это постигнет ту же участь, что:
struct X { int i; };
void foo(X* x) {
x->i = 2;
}
int main() {
foo(&X());
}
Что берет адрес локальной переменной.
Является ли первый пример полностью безопасным?