Время создания экземпляра встроенного статического члена C++17: ленивое создание экземпляра или перед main()?C++

Программы на C++. Форум разработчиков
Anonymous
Время создания экземпляра встроенного статического члена C++17: ленивое создание экземпляра или перед main()?

Сообщение Anonymous »

Я определяю встроенный статический элемент данных в классе C++17 (

Код: Выделить всё

inline static SharedData gSharedData;
).
У меня два вопроса:
1)Кажется, он создается перед main( ) начинается как (

Код: Выделить всё

non-inline static
member) и не ленивая инициализация (сначала используйте идиому). Всегда ли это так для встроенных статических переменных?
2) В проекте, над которым я работаю (большая база кода), который похож на приведенный ниже код, я наблюдаю несколько конструкторов вызовы из разных потоков, каждый из которых печатает свой адрес, что позволяет предположить, что создается более одного экземпляра! Насколько мне известно, создание статических переменных является потокобезопасным, начиная с C++11. Есть мысли или идеи, почему два потока создают один и тот же встроенный статический элемент?

Код: Выделить всё

#include 
#include 
class SharedData {
public:
SharedData() {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79347137/c17-inline-static-member-instantiation-timing-lazy-instantiation-or-before-ma[/url]

Вернуться в «C++»