Сегодня я заметил, что в примере кода:
void print(unsigned short a) {
std::cout << a << std::endl;
}
Инициализация и использование работают следующим образом:
print(short (5));
Но не так:
print(unsigned short(6));
main.cpp: 16: 8: ошибка: ожидаемое первичное выражение перед печатью "unsigned" (unsigned short (6));
И это не связано с типом, так как это также работает:
typedef unsigned short ushort;
print(ushort (6));
Поэтому я пошел искать то, что стандарт говорит о инициализации стоимости. Ничего не получается:
Эффект инициализации значения:
1) если T - тип класса...
2) если T - тип неединичного класса...
2) если T - тип класса...
3) если T - тип массива,..
4) в противном случае объект инициализируется нулем.
Модификации сделаны для удобочитаемости. Оригинальный источник.
Каковы правила инициализации значений типов POD? В чем причина того, что unsigned
квалифицированные типы не могут быть инициализированы значением? Это больше связано с тем, что они являются rvalues
?