http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58093
--- Comment #2 from Nick Maclaren <nmm1 at cam dot ac.uk> --- I have no idea why you think that it is a narrowing conversion. The references I gave have been essentially unchanged since C90, and there is required to be no loss of information. All values of int can be represented in unsigned long in any conforming implementation. The primary condition of 8.5.4 p7 is fulfilled, and therefore the exception is irrelevant. This was clarified in C99 6.2.6.2. No, I did not support that interpretation in C90, but it's the one WG14 adopted. But it's merely a confusing diagnostic, and is therefore lost in the multitude of such things. Thank you for your correction on the templates - I was still thinking in terms of arguments and not patterns!