Обратил внимание, что даже в последних стандартах подчеркивается, что ряд особенностей C++ (хотя бы пресловутое сужение типа) существует лишь для совместимости с C.
Насколько это востребовано вообще? Ладно, где-нибудь в начале-середине 90-х, когда в C++ устоялись еще не все базовые свойства, и многие банально опасались переходить с C, не зная, куда оно в итоге повернется. Но уже где-то к концу 90-х основные вещи устаканились и, если в последующие лет десять кто-то не переписал свой софт на C++, то уже вряд ли стал это делать позднее. Или до сих пор переписывают в товарных количествах?
С другой стороны, я еще с конца 90-х привык для каждого нового проекта (в том числе переносимого с C) включать все возможные предупреждения, отключая явно лишь наиболее очевидные. Понятно, что на сишных текстах такой режим выдавал сотни-тысячи предупреждений, и какое-то время уходило на правку, зато все остальное время можно было не опасаться где-то
незаметно накосячить. В этом смысле даже базовый (без дополнительного анализа со стороны компилятора) контроль типов в C++ гораздо правильнее либерального сишного.
В чем может быть ценность этой совместимости, кроме поощрения ленивых и малограмотных? Может, я чего не понимаю?
P.S. Речь исключительно о совместимости по синтакису/семантике кода. К связыванию и ABI вопрос не относился.