Вы почти у цели.Прежде всего, тип char const[]
должен быть указателем, потому что это неполный тип, который может не храниться в std::pair
.А во-вторых, вам не хватает пары скобок.Правильное объявление будет выглядеть следующим образом:
constexpr std::array<std::pair<int, const char*>, 3> strings = {{
{0, "Int"},
{1, "Float"},
{2, "Bool"},
}};
Требуются дополнительные фигурные скобки, поскольку std::array
- это агрегат, содержащий необработанный массив C, и поэтому нам нужны явные упоминания фигурных скобок, чтобы {0, "Int"}
не былоошибочно принят как инициализатор для внутреннего объекта массива.