performance/perf-cpp/scripts/enum-class-quiz.cc

50 lines
787 B
C++

#include <iostream>
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<int>(B) - static_cast<int>(A);
}
std::cout << t1 << " " << u1 << " " << t2 << " " << d << "\n";
}