The Mask
The Mask

Reputation: 17427

Why can't I use constexpr with lambda function?

I need an explanation for this. How does lambda differ from others function to it don't be allowed? Is this a nonsense to be not part of C++ standard? for example, I wanted to write a "nested" function in C++ but like it isn't possible to do directly I do use lambda instead of. This function does a very small job: take a single int parameter and multiply with some values and returns. This values are locals to where lambda function is defined and all them are constexpr and know at run-time for this reason I do want to let the compiler put a const value instead of call the function. It's very often used function (that's why I write this as function) and I don't want this beging computed at run-time.

Upvotes: 2

Views: 184

Answers (1)

galop1n
galop1n

Reputation: 8824

It is because the standard list lambda as non constant expression : "5.19 Constant expressions" … "is a core constant expression unless it involves one of the following as a potentially evaluated subexpression" … "— a lambda-expression (5.1.2);"

That is enough for any compiler to reject constexpr function with a lambda involved.

Upvotes: 4

Related Questions