Date: Thu, 19 Feb 2026 07:40:00 -0800
On Thu, Feb 19, 2026 at 7:28 AM Jonathan Grant <jg_at_[hidden]> wrote:
>
> 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.
That's already a problem for Standardization. __OPTIMIZE__ isn't a
Standard-defined macro. One would have to get that standardized first
before this feature could rely on it.
> 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.
I've seen the optimization level influence which warnings the compiler
will emit about code. Different optimization levels could cause the
compiler to do deeper or shallower code analysis. Which makes this
feature difficult to Standardize. The Standard doesn't get to assume
that optimizations happen at all.
> -- 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.
Just for clarity: I'm not saying anything about the utility of this
feature. Only that it will be a hard sell to Standardize it.
>
> 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.
That's already a problem for Standardization. __OPTIMIZE__ isn't a
Standard-defined macro. One would have to get that standardized first
before this feature could rely on it.
> 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.
I've seen the optimization level influence which warnings the compiler
will emit about code. Different optimization levels could cause the
compiler to do deeper or shallower code analysis. Which makes this
feature difficult to Standardize. The Standard doesn't get to assume
that optimizations happen at all.
> -- 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.
Just for clarity: I'm not saying anything about the utility of this
feature. Only that it will be a hard sell to Standardize it.
Received on 2026-02-19 15:40:15
