inline void statement(Ts &&... ts) { if (redirect_statement) redirect_statement->push_back(join(std::forward<Ts>(ts)...)); else { for (uint32_t i = 0; i < indent; i++) (*buffer) << " "; statement_inner(std::forward<Ts>(ts)...); (*buffer) << '\n'; } }
void statement_no_return(Ts &&... ts) { statement_indent(); statement_inner(std::forward<Ts>(ts)...); }
inline void statement(Ts &&... ts) { statement_indent(); statement_inner(std::forward<Ts>(ts)...); buffer << '\n'; }
inline void statement_inner(T &&t, Ts &&... ts) { buffer << std::forward<T>(t); statement_inner(std::forward<Ts>(ts)...); }
inline void statement_inner(T &&t, Ts &&... ts) { (*buffer) << std::forward<T>(t); statement_count++; statement_inner(std::forward<Ts>(ts)...); }