I’ve been playing a bit more with IILE’s lately. (Immediately Invoked Lambda Expression)

Especially regarding initializing a variable you have that has to be initialized using an interface you perhaps don’t control.

So the interface might look something like this.

bool
SomeApi::GetSomething(
    const int    aIndex,
    int&         aOutValue)
{
    if(myMap.count(aIndex) == 0)
    {
        aOutValue = 0;
        return false;
    }

    aOutValue = myMap[aIndex];
    return true;
}

So if you really want the aOutValue to be const where it’s used, you usually had to create a function that you then const’ed the return value.

But with IILE you can wrap that function’s logic in a lambda and call it immediately

const int value = [&myApi]()
{
    int apiValue = 0;
    myApi.GetSomething(10, apiValue);
    return apiValue;
}();

It’s still the same idea, wrap it in a function and use it, but if it’s only used in one location, it feels a bit nicer.