News for hackers. Stuff that matters.
Re:Std: Print is headed for C++23. std:cout is now a code smell by colejohnson66 on Monday November 29, 2021 @07:13PM (#29387134)
Using shift operators for reading and writing to streams never made sense to me
Re:Std: Print is headed for C++23. std:cout is now a code smell by eklitzke on Monday November 29, 2021 @07:17PM (#29387161)
What operator would you have used?
Re:Std: Print is headed for C++23. std:cout is now a code smell by colejohnson66 on Monday November 29, 2021 @07:21PM (#29387191)
None. Just use a simple function call like almost every other language. Why is

    std::cout::write(myInt)
such a hard thing to write that we decided

    std::cout << myInt
was a better idea?
Re:Std: Print is headed for C++23. std:cout is now a code smell by fbkr on Monday November 29, 2021 @08:24PM (#29387643)
Disclaimer: I dislike iostreams and in our environment <iostream> is completely banned.

However, in C++98, how else would you handle when you have an arbitrary number of things to print in a type-safe way? e.g.

    cout << myInt << ": " << something << " - " << otherthing << " - " << etc << '\n';
printf is not type-safe, nor supports user defined types. I'd rather not write 8 lines of functions calls for the same thing either.

I think it made some sense C++98, though it is an awful API in 2021.

Re:Std: Print is headed for C++23. std:cout is now a code smell by google234123 on Monday November 29, 2021 @10:22PM (#29388561)
std::cout::write(myInt,": ",something," - ",otherthing," - ",etc,'\n');

Possible with preprocessor.

Re:Std: Print is headed for C++23. std:cout is now a code smell by slavik81 on Tuesday November 30, 2021 @01:34AM (#29389558)
I'm not sure how that could be done before variadic templates were introduced in C++11.
Re:Std: Print is headed for C++23. std:cout is now a code smell by fbkr on Tuesday November 30, 2021 @01:48AM (#29389629)
I doubt that's possible with the C++98 preprocessor.
Re:Std: Print is headed for C++23. std:cout is now a code smell by kayamon on Wednesday December 01, 2021 @01:29AM (#29401273)
> However, in C++98, how else would you handle when you have an arbitrary number of things to print in a type-safe way? e.g.

If I were the one designing the language, I'd have simply fixed printf to be type-safe. (e.g. via adding macro support a la Lisp)

Re:Std: Print is headed for C++23. std:cout is now a code smell by trinovantes on Monday November 29, 2021 @07:46PM (#29387397)
If I have to guess, it's probably to support operator overloading (printing custom data type) without requiring OOP e.g. must be a class that implements Writable
Re:Std: Print is headed for C++23. std:cout is now a code smell by fivea on Monday November 29, 2021 @08:20PM (#29387613)
> What operator would you have used?

Qt does it right: fluent-style interface which does string interpolation.

Re:Std: Print is headed for C++23. std:cout is now a code smell by astrange on Monday November 29, 2021 @09:29PM (#29388165)
Is that localizable, or does it compile the interpolated string into code so it can't be replaced?
Re:Std: Print is headed for C++23. std:cout is now a code smell by slavik81 on Tuesday November 30, 2021 @01:31AM (#29389546)
Qt has a pretty extensive localization framework. You would probably want to wrap both strings in tr(). https://doc.qt.io/qt-5/i18n-source-translation.html