#pragma once #include trait fromint(otype T) { void ?{}(T&, int); }; trait zeroinit(otype T) { void ?{}(T&, zero_t); }; trait zero_assign(otype T) { T ?=?(T&, zero_t); }; trait subtract(otype T) { T ?-?(T, T); }; trait negate(otype 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 ?