On Saturday, May 4, 2024, Thiago Macieira wrote:
On Saturday 4 May 2024 06:44:13 GMT-7 Frederick Virchanza Gotham via Std-
Proposals wrote:
> I wonder is it foreseeable in the future that the following would be valid
> code for a program that ends with EXIT_SUCCESS?

I hope so. There are many programming techniques that get unblocked by having
the ability to turn formal parameters into constant expressions, when run in a
constant expression environment.



Just to be a little more verbose here. If we consider that there are two ways in C++ of writing a function that adds two numbers:

int Add1(int const a, int const b)
{
    return a+b;
}

template<int a, int b>
int Add2(void)
{
    return a+b;
}

Then what we want is for the compiler to encounter the following function:

constexpr int Add3(int const a, int const b)
{
    return a+b;
}

And for the compiler to internally generate both Add1 and Add2, invoking Add2 wherever possible, and invoking Add1 only when it can't invoke Add2.

That is to say, a call to:

    Add3( monkey, frog );

will be transformed into either:

    Add2<monkey, frog>();

or:

    Add1( monkey, frog );