#include <cstdlib>
#ifdef NDEBUG
// Suppresses unused variable warnings in release builds.
#define ASSERT(X) (void(sizeof (X)))
#else
#define ASSERT(X) ((X) ? void() : std::abort())
#endif
constexpr int f(int const x)
{
return ASSERT(x != 0), x;
}
int main()
{
int a = f(0);
}
I2luY2x1ZGUgPGNzdGRsaWI+CgojaWZkZWYgTkRFQlVHCiAgICAvLyBTdXBwcmVzc2VzIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncyBpbiByZWxlYXNlIGJ1aWxkcy4KICAgICNkZWZpbmUgQVNTRVJUKFgpICh2b2lkKHNpemVvZiAoWCkpKQojZWxzZQogICAgI2RlZmluZSBBU1NFUlQoWCkgKChYKSA/IHZvaWQoKSA6IHN0ZDo6YWJvcnQoKSkKI2VuZGlmCgpjb25zdGV4cHIgaW50IGYoaW50IGNvbnN0IHgpCnsKICAgIHJldHVybiBBU1NFUlQoeCAhPSAwKSwgeDsKfQoKaW50IG1haW4oKQp7CglpbnQgYSA9IGYoMCk7Cn0K