Presented by Shachar Shemesh at Core C++ 2021 conference.
C++ have implicit Integer conversion rules designed to serve the purpose of the C programming language from which C++ inherited them. These rules leave way too much up for the compiler's static analysis (best case) or the programmer (worst case) to detect. While not frequently, misunderstanding those rules may result in serious, hard to spot, bugs.
In this lecture we will go over the way C, C++, Rust and D treat integer promotion, and see how they, essentially, leave the problem unsolved.
We will also look at the way Practical, a language at its infancy, solves this problem. We will also look at some far-reaching implications to areas such as user-defined types and function overloading that those changes made.
=====
Shachar has over 25 years of professional C++ experience, and 20 as an Open Source developer. Career included working for the security industry as CheckPoint's main security focus point, doing high throughput network programming for Akamai Technologies, as well as low latency storage, developing Weka.IO's RAID component.
Today is working for DriveU, developing low latency system for remote driving autonomous cars via cellular networks.
Among my open source projects: rsyncrypto (rsync friendly symmetric encryption protocol), fakeroot-ng (simulating root privileges using ptrace to fake system call results) and the Practical programming language (a new, general purpose, programming language).
![](https://s2.save4k.ru/pic/b0VjS0OKTmQ/maxresdefault.jpg)