Fwd: [PATCH] __attribute__((enable_if)) and non-overloaded member functions

Nick Lewycky via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 26 14:39:12 PDT 2015


--> lists.llvm.org

---------- Forwarded message ----------
From: Ettore Speziale <speziale.ettore at gmail.com>
Date: 26 August 2015 at 14:35
Subject: Re: [PATCH] __attribute__((enable_if)) and non-overloaded member
functions
To: Nick Lewycky <nlewycky at google.com>
Cc: llvm cfe <cfe-commits at cs.uiuc.edu>


Hello,

> Sorry about the extreme delay. This patch slipped through the cracks, and
I only noticed it again when searching my email for enable_if. Committed in
r245985! In the future, please feel free to continue pinging weekly!

NP, thank you for committing the patch.

Unfortunately it contains a little error in the case of no candidate has
been found. For instance consider the following test case:

struct Incomplete;

struct X {
void hidden_by_argument_conversion(Incomplete n, int m = 0)
__attribute((enable_if(m == 10, "chosen when 'm' is ten")));
};

x.hidden_by_argument_conversion(10);

I would expect to get an error about Incomplete, as the compiler cannot
understand how to convert 10 into an instance of Incomplete. However right
now the enable_if diagnostic is emitted, thus masking the more useful
message about Incomplete.

The attached patch solved the problem by delaying the point where the
enable_if diagnostic is issued.

Thanks,
Ettore Speziale
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150826/6e092e82/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: enable_if.diff
Type: application/octet-stream
Size: 3277 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150826/6e092e82/attachment.obj>


More information about the cfe-commits mailing list