Я изучаю C ++ и увидел цикл for, основанный на диапазоне, например:
for
for (int i : {1,2,3,4,5}) std::cout << i << ' ';
Что такое временная {1,2,3,4,5} в цикле for за кадром?
{1,2,3,4,5}
Объект здесь является экземпляром std::initializer_list<int>. Из справки (выделено мое):
std::initializer_list<int>
Объект std :: initializer_list создается автоматически, когда: фигурный список инициализации используется для инициализации списка объекта, где соответствующий конструктор принимает параметр std :: initializer_list фигурный список инициализации используется в качестве правого операнда присваивания или в качестве аргумента вызова функции, а соответствующий оператор / функция присваивания принимает параметр std :: initializer_list список фигурных скобок привязан к auto, включая в цикле for ranged
Объект std :: initializer_list создается автоматически, когда:
фигурный список инициализации используется для инициализации списка объекта, где соответствующий конструктор принимает параметр std :: initializer_list
фигурный список инициализации используется в качестве правого операнда присваивания или в качестве аргумента вызова функции, а соответствующий оператор / функция присваивания принимает параметр std :: initializer_list
список фигурных скобок привязан к auto, включая в цикле for ranged
Что такое временный {1,2,3,4,5} в цикле for за кадром?
a std::initializer_list<int>