инициализация агрегатов в c ++ с массивами в стиле c - PullRequest
0 голосов
/ 31 января 2019

В c ++ 14 у меня есть следующий тип:

std::tuple<int[2], int>;

Как правильно его инициализировать?Это

std::tuple<int[2], int> a {{2,2},3};

дает мне эту ошибку:

/ usr / include / c ++ / 5 / tuple: 108: 25: ошибка: массив используется в качестве инициализатора

Хотя это:

std::tuple<std::array<int,2>, int> a {{2,2},3};

работает, но я хочу иметь возможность работать со стандартными массивами в стиле C

1 Ответ

0 голосов
/ 31 января 2019

std::tuple не является агрегатом и не предоставляет list-initializer constructor .Это делает инициализацию списка с этим типом невозможной для использования с массивами C.

Однако вы можете использовать std::make_tuple:

auto a = std::make_tuple<int[2], int>({2,2},3);
...