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

Ettore Speziale via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 26 14:40:34 PDT 2015


Forward to the right ML:

>> 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 --------------
A non-text attachment was scrubbed...
Name: enable_if.diff
Type: application/octet-stream
Size: 3204 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150826/cf0467ae/attachment-0001.obj>


More information about the cfe-commits mailing list