Il est juste à propos de l'ordre, mais il ya quelques autres choses à considérer:
Les compilateurs utilisent généralement caché variable d'indicateur pour indiquer si le local de la statique ont déjà été initialisé, et ce drapeau est vérifiée à chaque entrée de la fonction. Évidemment, c'est un petit gain de performance, mais ce qui est plus inquiétant, c'est que ce drapeau n'est pas garanti d'être thread-safe.
Si vous avez un local statique, comme ci-dessus, et " foo "est appelé à partir de plusieurs threads, vous pouvez avoir des conditions de course cause "pinard" pour être initialisé de manière incorrecte ou même plusieurs fois. Aussi, dans ce cas, 'pinard pourraient être détruits par un autre thread que celui qui l'a réalisée.
En dépit de ce que dit la norme, je serais très méfiant de la commande locale statique de la destruction, car il est possible que vous pourriez involontairement compter sur un statique étant toujours valide après avoir été détruite, et c'est vraiment difficile à retracer.