assert() is a macro that is usually disabled in production builds. Input validation is obviously most important in production, so assert() should never be used for validation.
assert() is a macro that will print an error message and abort the program if its argument doesn't evaluate to true.
assert() is usually used in debug builds to verify internal invariants of the code: "if this is false, something has gone horribly, terribly wrong; we've gone crazy and we should abort to avoid further hurting ourselves or others". It shouldn't be used to verify that user input is well-formed, since this happens under normal circumstances.
Furthermore, assert is specifically intended to catch internal logic bugs which would still be present even after user input validation. i.e. logic bugs which are invariant upon user input
Does anyone know what he's talking about?