From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12227 invoked by alias); 23 Jun 2013 12:05:24 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 12199 invoked by uid 48); 23 Jun 2013 12:05:22 -0000 From: "redi at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/57684] [c++11] Lambda is not convertible to std::function Date: Sun, 23 Jun 2013 12:05:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 4.8.1 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: redi at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-06/txt/msg01270.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57684 --- Comment #1 from Jonathan Wakely --- I think the problem is that unordered_map requires its template arguments to be complete at the time of instantiation, otherwise it's undefined behaviour. When the static member is instantiated the type Derived is not complete, because base is instantiated before the body of derived. So although it would be nice if this worked, I think it technically relies on undefined behaviour.