Rethink the assert function template

The assert function-template can "capture" language object (here an expression)