inline double once_c(_fCallable&& f, _tParams&&... args) { const std::clock_t cl(std::clock()); yforward(f)(yforward(args)...); return double(clock() - cl) / CLOCKS_PER_SEC; }
inline double total_c(size_t n, _fCallable&& f, _tParams&&... args) { const std::clock_t cl(std::clock()); for(size_t i(0); i != n; ++i) yforward(f)(yforward(args)...); return double(clock() - cl) / CLOCKS_PER_SEC; }
bool strict_all_of(_tIn first, _tIn last, _fPred pred) { return std::accumulate(first, last, true, [pred](bool b, decltype(*first) val){ return b && bool(pred(yforward(val))); }); }
yconstfn _type make_from_tuple_impl(_tTuple&& t, index_sequence<_vSeq...>) { return _type(std::get<_vSeq>(yforward(t))...); }
yconstfn std::initializer_list<_tDst> initializer_cast(_tSrc&&... x) { return {_tDst(yforward(x))...}; }
yconstfn mixin(variadic_sequence<_vSeq...>, std::tuple<_tParams...>&& tp) : _tBases(yforward(std::get<_vSeq>(tp)))... {}
yconstfn mixin(_tParam1&& arg1, _tParam2&& arg2, _tParams&&... args) : mixin(std::forward_as_tuple(yforward(arg1), yforward(arg2), yforward(args)...)) {}
yconstfn mixin(_tParam&& arg) : _tBases(yforward(arg)) {}
yconstfn boxed_value(_tParam1&& arg1, _tParam2&& arg2, _tParams&&... args) : value(yforward(arg1), yforward(arg2), yforward(args)...) {}
yconstfn boxed_value(_tParam&& arg) : value(yforward(arg)) {}