On Tue, 14 Jan 2003 17:11:39 -0500, David Abrahams
<[EMAIL PROTECTED]> wrote:

>Gennaro Prota <[EMAIL PROTECTED]> writes:
>> As I think you all know, if you have something like
>>
>>     enum e { e1 = 1u << 31 };
>>
>> then it simply "promotes" e1 to int instead of unsigned int. For
>> instance this
>>
>>     enum e { e1 = 2147483648u };
>>
>>     #include <iostream>
>>
>>     int main() {
>>         std::cout << e1 << '\n';
>>     }
>>
>> outputs -2147483648. Applied to my code, where I have e.g.
>
>Are you sure the promotion doesn't happen when e1 is passed to the
>streaming operator?

I'm afraid I don't understand your question. Maybe you are asking
whether the compiler is just favoring conversion over promotion? I
don't think so. I think the problem is that they just consider int as
the underlying type, always. The overall effect however is
more-or-less the same than if they always converted to int. As a
further example, this executes the if-branch:

   if ( (e1 + 0) < 0)
           std::cout << "Bad promotion...\n";

Thoughts?

Genny.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to