[llvm-dev] RFC: General purpose type-safe formatting library

Mehdi Amini via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 12 11:24:47 PDT 2016


> On Oct 12, 2016, at 7:12 AM, Zachary Turner via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Ahh, UDLs also wouldn't permit non literal format strings, which is a deal breaker imo

Why?
Somehow the goal pursued by Pavel (which you didn’t object per-se) is to provide *compile* time checking.
This imply that you cannot decouple the construction of the format and the argument list.

— 
Mehdi

> On Wed, Oct 12, 2016 at 7:03 AM Zachary Turner <zturner at google.com <mailto:zturner at google.com>> wrote:
> I'm not sure that would work well. The implementation relies on being able to index into the parameter pack. How would you do that if each parameter is streamed in?
> 
> "{0} {1}"_fs(1, 2)
> 
> Could perhaps work, but it looks a little strange to me.
> 
> Fwiw i agree format_string is long. Ideally it would be called format, but that's taken.
> 
> Another option is os.format("{0}", 7), and have format_string("{0}", 7) return a std::string.
> On Wed, Oct 12, 2016 at 6:43 AM Aaron Ballman <aaron at aaronballman.com <mailto:aaron at aaronballman.com>> wrote:
> >> 1. os << format_string("Test");   // writes "test"
> >> 2. os << format_string("{0}", 7);  // writes "7"
> >
> >
> > The "<< format_string(..." is ... really verbose for me. It also makes me
> > strongly feel like this produces a string rather than a streamable entity.
> 
> I wonder if we could use UDLs instead?
> 
> os << "Test" << "{0}"_fs << 7;
> 
> ~Aaron
> 
> >
> > I'm not a huge fan of streaming, but if we want to go this route, I'd very
> > much like to keep the syntax short and sweet. "format" is pretty great for
> > that. If this is going to fully subsume its use cases, can we eventually get
> > that to be the name?
> >
> > (While I don't like streaming, I'm not trying to fight that battle here...)
> >
> > Also, you should probably look at what is quickly becoming a popular C++
> > library in this space: https://github.com/fmtlib/fmt <https://github.com/fmtlib/fmt>
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
> >
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161012/d541ccf4/attachment.html>


More information about the llvm-dev mailing list