Mostly fixed the static assert for function signature, however it does not yet enforce the const requirement