constexpr
evaluates a function or variable at compile time, as opposed to execution time.
constexpr int square(int n) {
return n * n;
}
int main() {
constexpr int v = square(5); // 25
}
[] () mutable throw() -> int {
return 5;
}
[]
: Capture clause. Specifies what variables are captured from the environment.&
are passed by reference, otherwise they are passed by value[&]
: All variables are captured by reference[=]
: All variables are captured by value[=, &var]
, capture all variables by value, capture "var" by reference[&, &i]
has &i
repeated()
: Parameter list. Optional. Used like a normal function's parameter list.mutable
: Mutable specification. Optional. Allows capture by value variables to be modified inside the lambda's body.throw(...)
: Exception specification. Optional.noexcept
or throw()
means no exception is thrownthrow(...)
if an exception of any type can be thrownthrow(type)
if an exception of type type
can be thrown-> int
: Trailing return type. Optional. Defaults to auto
{ ... }
: Lambda bodyFor more information: Microsoft Docs.