Eine Enum ist eine Möglichkeit, reinen Zahlenwerte eine genauere Bedeutung beizumessen. Es gibt sogar typisierte Enums, wo es dann nicht erlaubt ist, Enum-Werte aus dem einen Enum irgendwo zuzuweisen, wo ein Wert eines anderen Enums erwartet wird. Das sorgt für Sicherheit, auch wenn Enums letztendlich komplett mit reinen Zahlen realisiert werden können - und doch eigentlich total überflüssig sein müßten, nicht wahr?
In meiner alten Firma waren wir ca. 25 Entwickler, und allein das Basis-Framework bestand aus ca. 1000 Klassen und Interfaces. Ich würde mal sagen, die Größenordnung kenne ich durchaus.
Im Übrigen ging's mir auch gar nicht so sehr um TEST und FEST, es geht nur einfach darum, daß man Variablen von einem Typ normalerweise nicht "einfach so" einer anderen Variable zuweisen sollte. Auch wenn's doch letztlich "nur Zahlen" sind. Siehe meinen Vergleich mit dem Autotanken, beidesmal ist es flüssiger Treibstoff. Aber es kann ganz schön böse enden. Wenn der Compiler das aber gar nicht erst zuläßt (im Falle der Tankstellen ist das vielleicht sogar eher der Linker

Da Du ja ebenfalls in der Branche tätig bist, müßtest Du ja auch wissen, daß ein LONG und eine FLOAT beide auf einem stinknormalen 32-Bit-Speicherbereich basierenDank dieses "Features" haben wir nun sage und schreibe 4 (!) verschiedene Variablentypen: HWND, UINT, WPARAM und LPARAM.
Diese basieren aber alle auf LONG

Wozu also die ganze Aufregung?
Letztendlich kann man es dem Compiler nie übel nehmen, wenn er den Programmierer vor solchen Fehlern warnt. Solange man jederzeit die Möglichkeit hat, es explizit zu umgehen.
Und als "Haarspalterei Deluxe" würde ich es auch nicht bezeichnen. Trotzdem will ich mich mit niemandem "in die Wolle" kriegen, ich finde es nur allgemein sehr unüberlegt, wenn solche Features, die durchaus einen Grund haben (oder meinst Du der Compiler denkt sich das Verhalten selbst aus), als überflüssig hinzustellen, denn je nach Betrachtungsweise ist eh alles überflüssig. Um es in Deinen Worten zu sagen: Dank der Entwicklung von Hochsprachen haben wir C++, PureBasic, Delphi und Fortran. Diese erzeugen aber alle MASCHINENCODE!