Hello, John!

Thanks for your comments!
I introduced a flag that allows noreturn mismatches only if template
deduction is called during overload resolution.  It allowed also to use
function calls only in these cases while just comparing pointers in all the
other cases.

Just comparing types will not work unless noreturn and non-noreturn
functions have the same type, but this is not the thing we want according
to the recent discussion on PR15105.  While it is possible to build a
similar function type without noreturn and compare against it, this would
not work for implicit default calling conventions that require the same
logic in overload as noreturn functions.

Is this patch better?

--
Alex


On 26 February 2013 02:48, John McCall <[email protected]> wrote:

> On Feb 25, 2013, at 8:34 AM, Alexander Zinenko <[email protected]> wrote:
> > This patch allows function templates with GNU noreturn attribute to
> participate in overload resolution as non-noreturn ones.  Same behavior is
> allowed for functions now.
> > The patch only allows deducing such types since the necessary
> adjustments are already performed in corresponding functions (like in
> IsStandardConversion).
>
> This function does a lot of work to make sure that the final equality
> comparison is a (fast) pointer equality test, and you're replacing it with
> a (slow) function call.
>
> Also, we definitely don't want to allow noreturn mismatches in every
> context.
>
> John.
>
>

Attachment: PR15291.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to