[PATCH] D27679: WIP: simplify format member detection in FormatVariadic
Pavel Labath via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 12 09:32:53 PST 2016
labath created this revision.
labath added reviewers: zturner, inglorion.
labath added a subscriber: llvm-commits.
This replaces the format member search, which was quite complicated, with a more
direct approach to detecting whether a class should be formatted using the
format-member method. Instead we use a special type llvm::format_adapter, which
every adapter must inherit from. Then the search can be simply implemented with
the is_base_of type trait.
Aside from the simplification, I like this way more because it makes it more
explicit that you are supposed to use this type only for adapter-like
formattings, and the other approach (format_provider overloads) should be used
as a default (a mistake I made when first trying to use this library).
The only slight change in behaviour here is that now choose the format-adapter
branch even if the format member invocation will fail to compile (e.g. because it is a
non-const member function and we are passing a const adapter), whereas
previously we would have gone on to search for format_providers for the type.
However, I think that is actually a good thing, as it probably means the
programmer did something wrong.
The patch is still rough around the edges (some things could be renamed, docs
updated a bit, ...), but I wanted to get an early feel whether you think this is
a good idea.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 6539 bytes
Desc: not available
More information about the llvm-commits