------- Comment #9 from gpiez at web dot de 2010-06-11 13:27 ------- I understand now after the implicit promotion to int of a non constant value the result of the narrowing operation can't be guaranteed to fit in the original type. But I still think it shouldn't give an error, and if the standard says so, I think it is flawed in this regard ;-)
Consider g<INT_MAX, INT_MAX>(); // Warning, but no Error despite it can be proven that the value will not fit and this is very likely an error. Opposing to char c,d; A a = { c+d }; which is very likely not an error and would only require a mild warning. IMHO. Manuel, in your testcase, you do not only warn, you error out if compiled with -std=c++0x. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44500