Return-Path: Delivered-To: apmail-incubator-stdcxx-dev-archive@www.apache.org Received: (qmail 98879 invoked from network); 24 Nov 2006 18:40:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 24 Nov 2006 18:40:26 -0000 Received: (qmail 38663 invoked by uid 500); 24 Nov 2006 18:40:33 -0000 Delivered-To: apmail-incubator-stdcxx-dev-archive@incubator.apache.org Received: (qmail 38629 invoked by uid 500); 24 Nov 2006 18:40:33 -0000 Mailing-List: contact stdcxx-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: stdcxx-dev@incubator.apache.org Delivered-To: mailing list stdcxx-dev@incubator.apache.org Received: (qmail 38579 invoked by uid 99); 24 Nov 2006 18:40:33 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Nov 2006 10:40:33 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Nov 2006 10:40:23 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 84E787141E4 for ; Fri, 24 Nov 2006 10:40:02 -0800 (PST) Message-ID: <26786278.1164393602535.JavaMail.jira@brutus> Date: Fri, 24 Nov 2006 10:40:02 -0800 (PST) From: "Martin Sebor (JIRA)" To: stdcxx-dev@incubator.apache.org Subject: [jira] Commented: (STDCXX-301) [XLC++ 8.0] bogus error 1540-0062 explicitly instantiating class template before definition In-Reply-To: <16923467.1162592296677.JavaMail.root@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ http://issues.apache.org/jira/browse/STDCXX-301?page=comments#action_12452502 ] Martin Sebor commented on STDCXX-301: ------------------------------------- -------- Original Message -------- Subject: IBM - PMR 02310,K78,000 - compile error with template Date: Mon, 20 Nov 2006 10:21:12 -0500 From: Nim Li To: Martin Sebor Hello Martin, For your first test case, the problem is triggered by the template parameter which is used as the default argument in a function. When the compiler attempts to resolve the template parameter as a regular name in this situation, the compilation error occurs. As a workaround, we suggest you not to use the default argument with template parameter. Currently, we are still working on the permanent fix. When I test your second test case, once I remove the default argument in the foo() function, I have no problem to compile the program. As a result, I determine it is due to the same issue. At the same time, I have sent your second test case to our development team; when they work on the fix, they will look into it as well. I will follow up with you no later than November 30. If you have any questions or concerns, please let me know. Thank you, Nim Li XL C/C++ and Fortran Support IBM Toronto Software Lab Phone: +1 905-413-5204 C/C++ Compiler Support Page: http://www.ibm.com/software/awdtools/ccompilers/support/ XL Fortran Support Page: http://www.ibm.com/software/awdtools/fortran/xlfortran/support/ zOS C/++ Support Page: http://www.ibm.com/software/awdtools/czos/support/ *Martin Sebor * 11/16/2006 04:49 PM To: Nim Li/Toronto/IBM@IBMCA cc: Subject: Re: IBM - PMR 02310,K78,000 - compile error with template Nim Li wrote: > > Hello, > > Regarding the subject PMR, we have identified the cause of the issue. > We will continue to work on your PMR. I will provide you a progress > update no later than November 24. > > If you have any questions or concerns, please let me know. I think the original test case can be reduced to the one below. Could you please pass it on to development and let ne know if you all agree that it is in fact the same bug? Thanks Martin $ cat t.cpp && xlC -qversion && xlC -c t.cpp struct A; template struct B { void foo (T = T::foo ()); }; template struct B; struct A { int foo (); }; IBM XL C/C++ Enterprise Edition V8.0 for AIX Version: 08.00.0000.0010 "t.cpp", line 2.43: 1540-0062 (S) The incomplete class "A" must not be used as a qualifier. "t.cpp", line 3.17: 1540-0700 (I) The previous message was produced while processing "struct B". > > Thank you, > > Nim Li > XL C/C++ and Fortran Support > IBM Toronto Software Lab > Phone: +1 905-413-5204 > C/C++ Compiler Support Page: > http://www.ibm.com/software/awdtools/ccompilers/support/ > XL Fortran Support Page: > http://www.ibm.com/software/awdtools/fortran/xlfortran/support/ > zOS C/++ Support Page: http://www.ibm.com/software/awdtools/czos/support/ > > > > > *Nim Li/Toronto/IBM* > > 11/06/2006 11:54 AM > > > To > sebor@roguewave.com > cc > > Subject > IBM - PMR 02310,K78,000 - compile error with template > > > > > > > > Hello, > > I am from the IBM's C/C++ compiler support team. I can reproduce the > problem with XL C/C++ V8. I will create an internal report for our > develop team to continue the investigation; then, provide you a progress > update by early next week. > > If you have any questions, please let me know. > > Thank you, > > Nim Li > XL C/C++ and Fortran Support > IBM Toronto Software Lab > Phone: +1 905-413-5204 > C/C++ Compiler Support Page: > http://www.ibm.com/software/awdtools/ccompilers/support/ > XL Fortran Support Page: > http://www.ibm.com/software/awdtools/fortran/xlfortran/support/ > zOS C/++ Support Page: http://www.ibm.com/software/awdtools/czos/support/ > [XLC++ 8.0] bogus error 1540-0062 explicitly instantiating class template before definition > ------------------------------------------------------------------------------------------- > > Key: STDCXX-301 > URL: http://issues.apache.org/jira/browse/STDCXX-301 > Project: C++ Standard Library > Issue Type: Bug > Components: External > Environment: IBM XLC++ 8.0 > Reporter: Martin Sebor > > PMR 02310,K78,000 > The well-formed program below fails to compile with XLC++ 8.0 on AIX (I haven't checked Linux). It compiles successfully with XLC++ 7.0. > $ cat t.cpp && xlC -qversion && xlC -c t.cpp > template > struct A { > static int foo (); > static int bar (int); > }; > template class B; > template > struct C { > int operator*() { return U::bar (b->baz ()); } > B *b; > }; > template > struct D { > void barf (U); > }; > template struct D > >; > template > struct B { > int baz (); > virtual int foobar (int i = U::foo ()) { return i; } > }; > template > void D::barf (U u) > { > *u; > } > IBM XL C/C++ Enterprise Edition V8.0 for AIX > Version: 08.00.0000.0010 > "t.cpp", line 28.33: 1540-0062 (S) The incomplete class "U" must not be used as a qualifier. > "t.cpp", line 12.39: 1540-0700 (I) The previous message was produced while processing "struct B >". -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira