#pragma once #include #include "Betriebssystem.h" namespace Framework { template class Either { private: A aValue; B bValue; bool a; public: 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 { return aValue; } B getB() const { 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; } }; }