One thing I love about C++ is it (mostly) stops me making type errors, compared to dynamic languages - "compile and it works". Adding type constraints makes programming safer, easier, and results in better compilation.
You can add other constraints (e.g. temporal constraints) and get similar benefits, on top of the above.