From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 651 invoked by alias); 9 Mar 2004 16:34:11 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 642 invoked by alias); 9 Mar 2004 16:34:10 -0000 Date: Tue, 09 Mar 2004 16:34:00 -0000 Message-ID: <20040309163410.640.qmail@sources.redhat.com> From: "bkoz at redhat dot com" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040309045153.14500.bkoz@gcc.gnu.org> References: <20040309045153.14500.bkoz@gcc.gnu.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/14500] most specialized function template vs. non-template function X-Bugzilla-Reason: CC X-SW-Source: 2004-03/txt/msg01126.txt.bz2 List-Id: ------- Additional Comments From bkoz at redhat dot com 2004-03-09 16:34 ------- Subject: Re: most specialized function template vs. non-template function >It looks to me that this is an interaction between "strong using" and >specializations: The most specialized swap() (for vector<>) leaves in >__gnu_norm:: whereas the most general leaves in std::. Therefore, when >you explicitly specialize, the compiler just considers the template in >std:: and forgets about the other one in __gnu_norm::; therefore it >thinks that you're specializing the one in std::. Which is wrong. >It should have collected all swap() reachable through strongly used >namespaces. (Recall that strong using says for all purposes except >mangling, everything is the same). Ok, that's what I thought too. Thanks for the clarification, and the smaller testcase. -benjamin -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14500