Most likely, we are talking about rvalue
In the c ++ language there is the concept of lvalue and rvalue. If it’s quite simple, lvalue is something that has a name, which means that it’s “nevertheless” can be left in the assignment operator, for example:
int x; x = 10;
Here, the x object is an lvalue, and we can assign "to it". It also has the name "x", and the name should not be confused (in this case, "x") and the value (immediately after the definition it is most likely not defined, after assigning the value will be 10). Please note that the "name" in question is present only at the compilation stage. Also, the presence of the name obliges to place the compiler in any memory, which means that the concept of the address of this object (in other words, a pointer) makes sense.
About the rvalue, everything seems to be there. An object that does not have a name is an rvalue, an example:
int x; x = 10;
Here 10 is an int rvalue of type if we try to assign something to it: 10 = x; then we get a compilation error. Rvalues can be "right" in an assignment statement, but they cannot be left. The rvalue object exists, but its address does not make sense (it may not exist at all, because, for example, the compiler can place it in a register, or optimize it altogether).
Now about the functions. In the C language, and in C ++ up to 11 standards, if you needed a certain function, you would definitely declare its prototype and description. In the prototype, you gave the function a name. This is an analogue of lvalue for functions, you have a function with a specific name. With 11 standards, it became possible to create lambda functions, these are functions that do not have a name, they can be used in the arguments of other functions, passing as a pointer to a function. It turns out that the lambda function is an anonymous, nameless function.
More details:
- About lvalue and rvalue
- Anonymous function
- Lambda functions in C ++
- About lambda functions on cppreference