[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.


https://reviews.llvm.org/D27679

Files:
  include/llvm/Support/FormatAdapters.h
  include/llvm/Support/FormatVariadicDetails.h
  unittests/Support/FormatVariadicTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27679.81100.patch
Type: text/x-patch
Size: 6539 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161212/01e27516/attachment.bin>


More information about the llvm-commits mailing list