1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
int main() {
int a = 5; // 'a' is an lvalue (and thus a glvalue)
int b = a + 10; // 'a + 10' is a prvalue
int* p = &a; // OK: 'a' is a glvalue
// int* q = &(a + 10); // Error: 'a + 10' is a prvalue, cannot take its address
int&& r = a + 10; // 'a + 10' is a prvalue, but 'r' is an xvalue (and thus a glvalue)
r = 20; // OK: 'r' is modifiable because it's a glvalue
return 0;
}
Back to glvalue