#pragma once #include #include "Betriebssystem.h" namespace Framework { template class Either { private: A aValue; B bValue; bool a; public: Either(const Either& b) { a = b.isA(); if (a) aValue = (A)b; else bValue = (B)b; } Either(A a) { aValue = a; this->a = 1; } Either(B b) { bValue = b; a = 0; } bool isA() const { return a; } bool isB() const { return !a; } A getA() const { assert(a); return aValue; } B getB() const { assert(!a); return bValue; } void doIfA(std::function action) { if (a) action(aValue); } void doIfB(std::function action) { if (!a) action(bValue); } operator A() const { assert(a); return aValue; } operator B() const { assert(!a); return bValue; } }; } // namespace Framework