For info about assert(), see:
http://www.cplusplus.com/reference/clibrary/cassert/assert/
An assert tests a condition and then reports if the condition failed. As written, the assert is asserting that somefunction() returns a non-zero value (0 = FALSE, anything else TRUE).
The standard one usually displays a popup and then triggers a breakpoint. But they could just log the failure and leave the code to continue.
To me, stubs are functions that allow a program to link even though they don't do anything. They're of use when you're part way through implementing something and want to test what else you're written before continuing.
If the "stub" contains a bit of logic so it can pretend to be a real function, then it's often called a mock function, rather than a stub (which is usually totally stupid). But I've also seen these functions (and classes) referred to as fake and dummy.
And a driver function is a stupid function that just calls a function, with the necessary parameters. They're generally used by developers when debugging a new function that isn't yet hooked up. If it starts to do validation, then it's really a unit test (or unit test function), rather than a simple driver function.
Regards
Andy