On Sat, May 8, 2021 at 2:04 PM JF Bastien <cxx@jfbastien.com> wrote:


On Sat, May 8, 2021 at 11:52 AM Nevin Liber via SG12 <sg12@lists.isocpp.org> wrote:
On Thu, May 6, 2021 at 6:47 PM JF Bastien via SG12 <sg12@lists.isocpp.org> wrote:
Compilers diagnose when functions can't be proved to return, and I wouldn't work on a codebase without this diagnostic enabled as an error. Is there a valid reason to keep this UB around?

How does one write an assert-type macro which, when it is disabled, still prevents this type of warning/error?  Because people do write:

my_assert(false);

to mean abort in debug mode, take my chances in release mode.


I don’t think I understand what you’re asking... but it sounds like 

#ifdef _DEBUG
#define YOLO() abort()
#else
#define YOLO() std::unreachable() // or __builtin_unreachable()

But I don’t know what you’re going for, and whether this is what you’re asking. 

What I'm saying is that under this, the mere presence of my_assert (even my_assert(true)) in a function, can change whether or not a program is conforming.
--
 Nevin ":-)" Liber  <mailto:nevin@cplusplusguy.com>  +1-847-691-1404