brintos

brintos / llvm-project-archived public Read only

0
0
Text · 514 B · abba344 Raw
24 lines · cpp
1// A bare-bones llvm::Optional reimplementation.2 3template <typename T> struct MyOptionalStorage {4  MyOptionalStorage(T val) : value(val), hasVal(true) {}5  MyOptionalStorage() {}6  T value;7  bool hasVal = false;8};9 10template <typename T> struct MyOptional {11  MyOptionalStorage<T> Storage;12  MyOptional(T val) : Storage(val) {}13  MyOptional() {}14  T &operator*() { return Storage.value; }15};16 17void stop() {}18 19int main(int argc, char **argv) {20  MyOptional<int> x, y = 42;21  stop(); // break here22  return *y;23}24