From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29231 invoked by alias); 21 Jul 2005 23:26:47 -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 29183 invoked by uid 48); 21 Jul 2005 23:26:44 -0000 Date: Thu, 21 Jul 2005 23:30:00 -0000 Message-ID: <20050721232644.29182.qmail@sourceware.org> From: "phenning at lanl dot gov" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050721184642.22596.phenning@lanl.gov> References: <20050721184642.22596.phenning@lanl.gov> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/22596] Impossible to explicitly instantiate particular overloaded function X-Bugzilla-Reason: CC X-SW-Source: 2005-07/txt/msg02649.txt.bz2 List-Id: ------- Additional Comments From phenning at lanl dot gov 2005-07-21 23:26 ------- (In reply to comment #5) > Your explicit instantiation > template int foo< A_class >(A_class a); > obviously matches both the declarations of foo. I'm unsure which > one the compiler should choose, but if you want to instantiate the > second one, why don't you write > template int foo< A_class,int >(A_class a); > i.e. explicitly state the second template argument as well? The compiler is more than happy to instantiate the second one... the problem is that it is converting my one template parameter explicit specialization into the two template parameter form, presumably because the function signature matches. I would expect that if I explicitly state the one parameter form, the compiler should instantiate the one parameter form. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22596