Date: Tue, 16 May 2023 12:12:53 +0200
Hi Andrew,
you were suggesting to use std::put
But there is already an basic_ostream::put member function.
https://en.cppreference.com/w/cpp/io/basic_ostream/put
The std::print and std::println functions have been provided as free functions and as basic_ostream member functions for good reasons (having a default stream and an individual stream).
One would probably want to do the same for an type-autodetecting print function.
put could have lots of existing code, which outputs a char by number, e.g. std::cout.put(65)
The question I stated at the end, is, whether puts can be safely used as std::puts free function and overloaded basic_ostream::puts member function instead.
The existing std::puts expects a const char* argument.
One (important?) difference between the existing std::puts(const char*) and std::print is that the former returns an implementation-defined int value, the latter is void.
Probably choosing a different name is the overall 'safer' option.
Then one is free to define, how const char* is printed, e.g. as this feature probably is most useful for debug output, one could rule, that all pointers print their address and the contents in a type-dependent way.
But this could also be two different requirements or two different functions, one for pretty default printing, one for information-rich debug printing.
Best,
Sebastian
-----Ursprüngliche Nachricht-----
Von:Andrew Tomazos <andrewtomazos_at_[hidden]>
Gesendet:Di 16.05.2023 11:09
Betreff:Re: [std-proposals] D2879R0 Proposal of Pythonesque std::print extensions LIVE LINK
An:std-proposals_at_[hidden];
CC:Sebastian Wittmeier <wittmeier_at_[hidden]>;
On Mon, May 15, 2023 at 1:30 AM Sebastian Wittmeier via Std-Proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> > wrote:
std::cout.put(65) writes "A"
So not compatible.
puts("65") expects a pointer and writes "65\n"
For print and println ostream-members have been created in addition to free std::print and std::println, and it would make sense for such an autodetecting function.
puts has string in its name and would be illogical to auto-detect other types. One can reason it would convert to string.
Would it be safe and continue to work with any current use?
I don't understand the question. Would what be safe? and continue to work with the current use of what? Continue to work after what event?
Received on 2023-05-16 10:12:55