C++ Logo

std-proposals

Advanced search

Re: [std-proposals] compile_assert() a static assert that fires at compile time, not runtime.

From: Jonathan Grant <jg_at_[hidden]>
Date: Thu, 19 Feb 2026 15:28:00 +0000
Hello

On 19/02/2026 15:11, Andre Kostur wrote:
> Does this mean that this can/will behave differently depending on what
> optimization levels you may have enabled on the compiler? -O3 and it
> can pass the compile_assert(), -O0 and the compile_assert() fails?
> If so, this could be troublesome in the context of the Standard since
> it doesn't currently acknowledge "optimization levels".

Hello Andre

if __OPTIMIZE__ is not defined, the compile_assert() macros all compile out.

I've not compared eg -O1 and -O3 to know of any differences, but you're right there might be. The errors may end up very compiler and optimizer specific (gcc vs clang etc), it may not be possible to have all compile_assert() desired with a particular compiler.
-- In which case, I would achieve the check another way (ie very close to the line of I am concerned about), or treat as a human review, and put in some mitigations and error handling by myself (and a test function to trigger a fault while running, an overflow etc and check detected), compile_assert() isn't suited to everything.

Regards, Jonathan

Received on 2026-02-19 15:28:05