Какой тип у выражения с фигурными скобками?
У литерала 42
тип int
, у "42"
- const char [3]
. А какой тип у чего-то в фигурных скобках? Например, какой тип у {1, 2, 3}
?
Источник: Stack Overflow на русском
У литерала 42
тип int
, у "42"
- const char [3]
. А какой тип у чего-то в фигурных скобках? Например, какой тип у {1, 2, 3}
?
У него нет типа, и в этом смысле его неправильно называть выражением.
В какой тип его преобразовывать - компилятор понимает из контекста.
Если написать auto x = {1,2,3}
, то тип определится как std::initializer_list<int>
, но это не значит, что это "родной" тип скобок. Потому что, например, template <typename T> void foo(T); foo({1,2,3});
уже не компилируется.