Есть ли практический смысл в неявном усечении значений?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.10.18 14:13
Оценка: +1
Есть ли какое-то практическое обоснование тому, что в C++ до сих разрешено неявное усечение значений (например, int до char)? Мне сложно понять такие неявные усечения даже в ранних версиях C, но там их еще можно худо-бедно оправдать стремлением видеть программу как можно более компактной по тексту, и общепринятым в те времена подходом "в таких языках программист должен сам следить за типами". По идее, уже в первых версиях C++ это следовало изжить, но обошлись лишь введением предупреждений компилятора. Позже добавили автоматические проверки в run-time.

Все бы ничего, но при вызове перегруженных функций из шаблонов других функций это превращается в кошмар. Например, для фактической комбинации параметров (short, int) компиляторы считают подходящими и (int, int), и (short, short), и (char, char). Что мешает в такой ситуации выбрать единственно безопасный (int, int)?

Ради чего это неявное усечение продолжают тянуть? Из старого кода вроде бы уже давно должны быть вычистить требующие его конструкции, а за использование их в новом коде — расстреливать на месте. Но в C++14 на эту тему все по-прежнему (текст C++17 сходу не нашелся).
value truncation conversion
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.