Motti ma rację co do kolejności, ale są też inne rzeczy do rozważenia:
Kompilatory zazwyczaj użyć zmiennej flag ukryty, aby wskazać, czy lokalne statyka już zainicjowany, a ta flaga jest sprawdzany na każdym wejściu do funkcji. Oczywiście jest to mały hit wydajnościowy, ale bardziej niepokojące jest to, że ta flaga nie ma gwarancji, że jest bezpieczna dla wątków.
Jeśli masz lokalną statystykę jak powyżej, a "foo" jest wywoływane z wielu wątków, możesz mieć warunki wyścigu, które powodują, że 'plonk' zostanie zainicjalizowany niepoprawnie, a nawet wiele razy. Również w tym przypadku "plon" może zostać zniszczony przez inny wątek niż ten, który go skonstruował.
Pomimo tego, co standard mówi, byłbym bardzo ostrożny wobec rzeczywistej kolejności lokalnego statycznego zniszczenia, ponieważ możliwe jest, że możesz nieświadomie polegać na statycznej wciąż ważnej po jej zniszczeniu, a to jest naprawdę trudne wyśledzić.
Normalnie nie głosuję na pytania, na które pytający natychmiast odpowiedział sam, ale ten jest interesujący. Dziękuję za to. –
@Motti Link nie działa. – Zaimatsu
@ Zaimatsu link nadal działa dla mnie. – Motti