virtual void call(boost::any const& val, FixedArgs &args) const //NOTE: const_cast so may actually not be :) { derived().call((Name *)0, retype_any(val), args); }
// Number in [0, max) uint32_t operator()(uint32_t max) { uint64_t v = derived()(); v *= max; return uint32_t(v >> 32); }
int test() { auto data = build(rand() % 100, [](){ return derived(rand() & 1, rand() & 1).f(); } ); std::cout << sum(data) << std::endl; return 0; }