// // die.hpp // dice-roll // // Created by Sam Jaffe on 12/1/18. // Copyright © 2018 Sam Jaffe. All rights reserved. // #pragma once #include #include #include namespace dice { enum sign { PLUS = 1, MINUS = -1, ZERO = 0 }; template static sign sgn(T val) { return sign((T(0) < val) - (val < T(0))); } int sgn(sign); std::string str(sign); struct die { sign sgn; int num, sides; }; struct mod { operator int() const; sign sign; int value; }; // Default value: 1{+0} struct dice { int num{1}; std::vector of{}; std::vector modifier{+0}; }; std::ostream & operator<<(std::ostream & out, dice const & d); std::istream & operator>>(std::istream & out, dice & d); }