<br><br><div class="gmail_quote">2009/8/20 Dmitry V. Levin <span dir="ltr">&lt;<a href="mailto:ldv@altlinux.org">ldv@altlinux.org</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Wed, Aug 19, 2009 at 12:33:21PM +0400, Damir wrote:<br>
&gt; On Wed, Aug 19, 2009 at 12:27:44PM +0400, Sergey Vlasov wrote:<br>
&gt; &gt; On Wed, Aug 19, 2009 at 04:41:07AM +0400, Dmitry V. Levin wrote:<br>
&gt; &gt; &gt; Поведение g++ изменилось между 4.3 и 4.4; если это не regression, то,<br>
&gt; &gt; &gt; видимо, надо патчить liblensfun (см. патч).<br>
&gt; &gt;<br>
</div><div class="im">&gt; &gt; Что интересно - такое поведение компилятора наблюдается только для<br>
&gt; &gt; enum с двумя константами; при добавлении третьей константы проверки на<br>
&gt; &gt; недопустимое для enum значение не исчезают.<br>
&gt;<br>
&gt; Скорее всего, там switch заменяется на просто if else.<br>
<br>
</div>Это всё понятно.  Непонятно, это g++ regression или вольная трактовка<br>
undefined behavior?  В любом случае рекомендую Виктору приложить патч на<br>
liblensfun и отправить его upstream.<br>
<br></blockquote></div><br>Спасибо за патч! Приложу и, естественно, отправлю.<br><br>На мой взгляд эту проблему стоило бы донести и до gcc&#39;шников. Даже если формально это нельзя назвать регрессией, то в любом случае это добротнейшая грабля, особенно в свете обнаруженной Сергеем Власовым неконсистентности поведения в зависимости от количества констант...<br>
<br><br><br>