From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22510 invoked by alias); 11 Dec 2008 19:56:55 -0000 Received: (qmail 20961 invoked by uid 48); 11 Dec 2008 19:55:29 -0000 Date: Thu, 11 Dec 2008 19:56:00 -0000 Message-ID: <20081211195529.20960.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug libstdc++/37582] [4.3 Regression] std::pow strange overload resolution In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-12/txt/msg01224.txt.bz2 ------- Comment #9 from jakub at gcc dot gnu dot org 2008-12-11 19:55 ------- Created an attachment (id=16888) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16888&action=view) gcc43-pr37582.patch Given: // N.B. The conversions to bool are needed due to the issue // explained in c++/19404. template struct __traitor { enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; typedef typename __truth_type<__value>::__type __type; }; I see this isn't the first time libstdc++ works around the C++ bug. So, either IMHO we should cast to bool there, or as done in this patch use __traitor instead. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37582