Может ли C++20 `constinit` отказаться от изящной идиомы счетчика?

C++20 представил constinit, чтобы избежать фиаско статического порядка инициализации.

Может constinit отказаться от использования отличной идиомы счетчика (например, для инициализации std::cout)?


person Amir Kirsh    schedule 17.03.2020    source источник
comment
constinit не останавливает фиаско статического порядка инициализации. Обычно говорят, что переменная должна быть постоянной или инициализированной нулем. то есть consinit int foo; будет ошибкой, а constinit int foo = 42; - нет.   -  person NathanOliver    schedule 17.03.2020


Ответы (1)


Может ли C++20 constinit отказаться от изящной идиомы счетчика?

No.

Фиаско порядка статической инициализации — это только проблема с фазой динамической инициализации статических объектов. Конечно, если вы не выполняете динамическую инициализацию, то проблем нет, и constinit обеспечивает это. Но это ничего не решает, когда вам нужна динамическая инициализация.

person eerorika    schedule 17.03.2020
comment
@ArdentCoder новый? :П - person Asteroids With Wings; 17.03.2020
comment
@AsteroidsWithWings Лол, я думаю, у него огромная фан-база - person Ardent Coder; 17.03.2020