On Wed, Aug 17, 2022 at 9:52 AM Florian Gavril via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
Hello,

As everyone knows that, the assert macro is very useful to find out unexpected conditions on the development stage, but for the production builds, the NDEBUG is usually enabled and assert is actually disabled. If assert is used, for example, in a function, to check if one of the parameters is not NULL, the program execution is terminated and some messages are displayed. But if NDEBUG is defined, the program will silently continue until the disaster happens. In order to avoid this situation, the programmer adds a double check for that parameter with a retur routine.

Basic example:
int func(int *p) {
  assert(p);
  if (p == NULL) {
    return 0;
  }
  ..........
  return 1;
}

My proposal is to re-define assert or define a new macro (let's say assertr, pretty much like assertm) which will take two arguments: condition and the return value for non-debug builds, In this case, the previous code may be compacted:
int func(int *p) {
  assertr(p, 0);
  ..........
  return 1;
}

Would this proposal cover your use case? https://wg21.link/p2546r

--
-- René Ferdinand Rivera Morell
-- Don't Assume Anything  -- No Supone Nada
-- Robot Dreams - http://robot-dreams.net