On Tue, 26 Nov 2024, Jonathan Wakely wrote:

In the bla() example above, the call bla() is a constant expression
when used to initialize a const int, so the compiler is required to
evaluate it at compile time.

When used in contexts that doesn't require an integral constant I think a
distinction between evaluating at compile time or at run time can't be
observed.

Agreed.

Can't be observed might be a bit strong?

constexpr int f(){
  if consteval {return 1;} else {return 2;}
}
int main(){
  int a=f();
  const int b=f();
  return a+b;
}

returns 3 (and clang agrees).

--
Marc Glisse

Reply via email to