> On 10 May 2018, at 14:58, Akim Demaille <[email protected]> wrote: > >> Le 10 mai 2018 à 14:01, Hans Åberg <[email protected]> a écrit : >> >>> On 9 May 2018, at 08:18, Akim Demaille <[email protected]> wrote: >>> >>>> Le 8 mai 2018 à 18:03, Hans Åberg <[email protected]> a écrit : >>>> >>>> >>>>> On 8 May 2018, at 17:02, Akim Demaille <[email protected]> wrote: >>>>> >>>>> Don't use std::endl, it flushes uselessly, and is considered bad >>>>> style. >>>> >>>> Flushing is good with debugging and error reporting, though. >>> >>> I agree, but in that case an explicit `flush()` is better. >>> And in the case of Bison, I don’t think we need any. >>> >>> Besides, stdout is typically line buffered when connected to a terminal, >>> and stderr is typically unbuffered. >> >> I can see this difference when throwing an uncaught exception: std::cerr is >> output before the exception reporting, whereas std::cout after, when the >> buffers are flushed in connection with program termination. > > Of course one can see differences in arbitrary programs. The > question is whether my changes change something for users. Do > you have an actual example?
For the std::cerr cases, if unbuffered, your changes will make no difference, I gather, but I recall in my code in the past that when debugging in an interactive debugger, one must be careful to flush. Then a problem with the Bison files is that they are automatically written, so it can be a bother trying to change it by hand.
