On Monday, 8 September 2014 at 12:36:29 UTC, Marco Leise wrote:
This may sound surprising, but I believe if we want to make Phobos consistent and give no incentive to roll your own stuff, we should do this for a lot of APIs. Without going into depth (but we could) there are good reasons to use classes and there are good reasons to use duck typing structs. Another API where this mixed scheme would apply are streams. By using function templates with `if (isLogger!T)` and an abstract class Logger, it will only get instantiated once for all derived classes reducing template bloat, while allowing custom instantiations for logger structs to avoid virtual function calls or GC issues. So I agree with Martin. It is a great way to bring the two camps together without major casualties.
I think the template bloat argument is invalid as __LINE__ and friends are passed as template arguments to allow write and writef type logging.
Anyway I will try to make them free standing
