типом?
uint16_t var = 43690;
std::cout << (var << 4); // 699040
Чтобы то что в скобках не преобразовывалось автоматически в int?
Можно и кастами, но интересует сама возможность сделать через настройки компилятора
static_cast<uint16_t>(var << 4);
А без каста никак?
Может так var << static_cast<uint16_t>(4)
Разве сработает? Не помню точных преобразований
Если верить сппреференсу, то << должен возвращать тип правого операнда T T::operator<<(const T2 &b) const (Хотя нет не должен, T2 can be any type including T)
Я тоже так подумал, но компиль сказал совсем другое
Он всё равно закастил к инту
Нет. Это встроенные правила преобразования типов
Обсуждают сегодня