O cppreference menciona que se a inicialização contiver uma parte de inicialização dinâmica, o programa ficará malformado ao usar constinit em C++20.
Só me pergunto por que o código a seguir compila então:
constinit std::string str = "Hello";
Como a std::string
classe envolve alocação dinâmica de memória para armazenar caracteres, parece contraditório. Isso não deveria ser proibido devido à parte dinâmica?
Tentei compilar com sinalizadores -std=C++20
e o programa compila bem, o que não deveria acontecer.