Какой тип у выражения с фигурными скобками?

Рейтинг: 4Ответов: 1Опубликовано: 25.01.2023

У литерала 42 тип int, у "42" - const char [3]. А какой тип у чего-то в фигурных скобках? Например, какой тип у {1, 2, 3}?

Ответы

▲ 7Принят

У него нет типа, и в этом смысле его неправильно называть выражением.

В какой тип его преобразовывать - компилятор понимает из контекста.

Если написать auto x = {1,2,3}, то тип определится как std::initializer_list<int>, но это не значит, что это "родной" тип скобок. Потому что, например, template <typename T> void foo(T); foo({1,2,3}); уже не компилируется.