Давайте рассмотрим этот кусок кода, который просто пытается инициализировать карту из массива constexpr:
#include <string>
#include <map>
#include <array>
#include <tuple>
constexpr std::array<std::pair<int, const char *>, 10> my_array {
{ { 0, "dd" },
{ 1, "dd" },
{ 2, "dd" },
{ 7, "dd" },
{ 8, "dd" },
{ 9, "dd" }}
};
std::map<int, std::string> my_map(std::begin(my_array), std::end(my_array));
int main() {
return my_map[0].size(); //dummy random operation
}
Я знаю, что нет способа предсказать порядок инициализации для двух переменных (my_array и my_map). Тем не менее, my_array - это constexpr, поэтому он должен быть доступен во время компиляции, поэтому при запуске не должно быть проблем с «порядком инициализации».
Правильно ли этот код или проблема с порядком инициализации остается?