From owner-freebsd-standards@FreeBSD.ORG Thu Apr 2 14:46:44 2015 Return-Path: Delivered-To: freebsd-standards@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C28E01E2 for ; Thu, 2 Apr 2015 14:46:44 +0000 (UTC) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8E1CBEAF for ; Thu, 2 Apr 2015 14:46:44 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t32Ekiq8093214 for ; Thu, 2 Apr 2015 14:46:44 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-standards@FreeBSD.org Subject: [Bug 199114] operator << (ostream &, const string &) linker problem Date: Thu, 02 Apr 2015 14:46:44 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: standards X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: hartmut.brandt@dlr.de X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-standards@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Apr 2015 14:46:44 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199114 Bug ID: 199114 Summary: operator << (ostream &, const string &) linker problem Product: Base System Version: 11.0-CURRENT Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: standards Assignee: freebsd-standards@FreeBSD.org Reporter: hartmut.brandt@dlr.de forward declares a template for the output operator, but this template is nowhere defined. Instead provides an inline definition for that template. This leads to the following program not linking: x.cc --- #include void foo(std::ostream &); int main() { foo(std::cout); } y.cc --- #include #include void foo(std::ostream &os) { os << std::string("a"); } The linker will give an undefined symbol for the operator <<. The reason is that forward declares the template which is not defined neither in nor in the librarie's string.cc. Because of the forward declaration y.cc happily compiles with an undefined reference in the obj-file. When including in y.cc, the linker is successful since there is a inline template definition in . According to my reading of the standard this is wrong - the defintion should be in or string.cc should have an instantiation of the template for char and wchar_t. This is probably an upstream issue? -- You are receiving this mail because: You are the assignee for the bug.