There are a number of problems with the standard C++ assert() macro. The one that gets me the most is that it's always present in debug builds and never present in release builds... this appears to be one of the reasons why debug builds are significantly slower. It might be useful to have a new assert macro which is controlled by some kind of 'Use Asserts' settings from CMake.
It also stops at the wrong place in Visual Studio (inside the standard library where assert is implmented, rather than at the line which caused the assert). There are various tips in books and articles about building a better assert.