Я пытаюсь использовать 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