#include struct Counter { inline static int x = 1; static void bump() { ++x; } }; struct Counter2 : Counter { inline static int x = 100; static void bump() { x += 10; } }; enum E { A = 1, B = 2 }; struct S { enum E { B = 3, C = 4 }; static int f() { return B; } }; enum class M : unsigned char { A = 250, B, C }; int g() { int B = 40; return S::f() + B; } int main() { Counter::bump(); Counter2::bump(); // 112 int t1 = Counter::x + Counter2::x; // 43 int u1 = g(); int B = 7; // 9 int t2 = B + ::B; int d; { using enum M; // 251 - 250 = 1? d = static_cast(B) - static_cast(A); } std::cout << t1 << " " << u1 << " " << t2 << " " << d << "\n"; }