Moved ASSERT_THROWS macro inside a {} block to ensure no variable declarations leak outside the macro or conflict with previous declarations
Moved assert to a separate header. Added erase with iterator range and integers + tests