From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19585 invoked by alias); 1 Jul 2005 00:06:54 -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 19107 invoked by uid 48); 1 Jul 2005 00:06:43 -0000 Date: Fri, 01 Jul 2005 00:06:00 -0000 Message-ID: <20050701000643.19106.qmail@sourceware.org> From: "sebor at roguewave dot com" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050630231800.22263.sebor@roguewave.com> References: <20050630231800.22263.sebor@roguewave.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/22263] explicit instantiation fails to emit symbols defined later X-Bugzilla-Reason: CC X-SW-Source: 2005-07/txt/msg00000.txt.bz2 List-Id: ------- Additional Comments From sebor at roguewave dot com 2005-07-01 00:06 ------- Further, in response to comment 2 from bug 22263: I agree that 14.7.2, p3 applies to that case but since the definition of class b is in scope at the point of the explicit instantiation of the class template I believe the test case is well-formed. The definition of a class template doesn't necessarily imply the definition of all its members, just their declaration. I don't see any practical difference between either of these cases and the case of explicitly instantiating a non-member function template which need only be declared but not necessarily defined at the point of the explicit instantiation. As an additional data point, the behavior implemented by all other compilers is to instantiate all members regardless of whether they are defined prior or after the directive. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22263