fork(1) download
  1. #include <iostream>
  2.  
  3. struct csv_t { std::ostream* stream; bool first; };
  4. thread_local csv_t csv;
  5.  
  6. csv_t& operator<<(std::ostream& str, csv_t& csv)
  7. {
  8. csv.stream = &str;
  9. csv.first = true;
  10. return csv;
  11. }
  12.  
  13. template<typename T>
  14. csv_t& operator<<(csv_t& csv, T const& arg)
  15. {
  16. if(csv.first) csv.first = false;
  17. else *csv.stream << ",";
  18. *csv.stream << arg;
  19. return csv;
  20. }
  21.  
  22. int main() {
  23. std::cout << csv << 1 << "abc" << 3.14f;
  24. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
1,abc,3.14