Использование «Авто» для выведения типа вложенного списка инициализаторовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование «Авто» для выведения типа вложенного списка инициализаторов

Сообщение Anonymous »

Я пытаюсь использовать Auto для автоматического вывода типа вложенного std :: initializer_list .

Код: Выделить всё

auto list = {
{{ 0, 1}, { 2, 3 }},
{{ 4, 5}, { 6, 7 }},
};
Фактический тип здесь std :: initializer_list , но когда я пытаюсь скомпилировать его, я получаю ошибку, утверждая, что Auto не может определить тип. Есть ли способ получить Auto для распознавания такой конструкции? https://en.cppreference.com/w/cpp/langu ... ialization написано. decktype ({1,2}) плохо сформирован. Отсутствие типа подразумевает, что вычет типа шаблона не может вывести тип, который соответствует листу Bred-init, поэтому, учитывая шаблон объявления void f (t); выражение f ({1,2,3}) плохо образуется. Тем не менее, параметр шаблона может быть выведен в противном случае, как и в случае STD :: Vector v (std :: istream_iterator (std :: cin), {}) , где тип итератора выведен первым аргументом, но также используется во втором положении параметра. Специальное исключение сделано для вычета типа с использованием ключевого слова Auto, который вычитает любой список Breed-init-list как std :: initializer_list в инициализации копии. Auto не может вывести тип.

Подробнее здесь: https://stackoverflow.com/questions/594 ... lizer-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»