#pragma once #include #include trait zeroassn(otype T) { T ?=?(T&, zero_t); }; trait fromint(otype T) { void ?{}(T&, int); }; trait zero_assign(otype T) { T ?=?(T&, zero_t); }; trait subtract(otype T) { T ?-?(T, T); T -?(T); }; trait add(otype T) { T ?+?(T, T); }; trait multiply(otype T) { T ?*?(T, T); }; trait divide(otype T) { T ?/?(T, T); }; trait lessthan(otype T) { int ?'; } void ?|?( ostype & os, vec2(T) v ) with (v) { (ostype &)(os | v); ends(os); } }