From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27131 invoked by alias); 21 Jun 2018 07:39:12 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 27094 invoked by uid 89); 21 Jun 2018 07:39:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.3 required=5.0 tests=BAYES_50,KAM_LAZY_DOMAIN_SECURITY,KAM_NUMSUBJECT,RCVD_IN_DNSWL_NONE autolearn=no version=3.3.2 spammy=UPDATE, uninstantiated, Hence, emplace_front X-HELO: us2-ob1-4.mailhostbox.com Received: from us2-ob1-4.mailhostbox.com (HELO us2-ob1-4.mailhostbox.com) (162.210.70.57) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 21 Jun 2018 07:39:10 +0000 Received: from [192.168.1.64] (115-188-136-130-vdsl.bb.spark.co.nz [115.188.136.130]) (Authenticated sender: matt@soulstudios.co.nz) by us2.outbound.mailhostbox.com (Postfix) with ESMTPA id 5C7D1182AC0; Thu, 21 Jun 2018 07:39:06 +0000 (GMT) Subject: Re: Apparent deeply-nested missing error bug with gcc 7.3 To: Jonathan Wakely Cc: "gcc@gcc.gnu.org" References: <5B270A8F.4090802@soulstudios.co.nz> From: Soul Studios Message-ID: Date: Thu, 21 Jun 2018 08:21:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-CMAE-Score: 0 X-CMAE-Analysis: v=2.2 cv=UKitJGXy c=1 sm=1 tr=0 a=9G+dizW/icOyw6Ak0BVi5Q==:117 a=9G+dizW/icOyw6Ak0BVi5Q==:17 a=IkcTkHD0fZMA:10 a=_vrEllL0HC3dFAkVmGsA:9 a=QEXdDO2ut3YA:10 X-IsSubscribed: yes X-SW-Source: 2018-06/txt/msg00228.txt.bz2 >> UPDATE: My bad. >> The original compiler feature detection on the test suite was broken/not >> matching the correct libstdc++ versions. >> Hence the emplace_back/emplace_front tests were not running. > > Told you so :-P > > >> However, it does surprise me that GCC doesn't check this code. > > It's a dependent expression so can't be fully checked until > instantiated -- and as you've discovered, it wasn't being > instantiated. There's a trade-off between compilation speed and doing > additional work to check uninstantiated templates with arbitrarily > complex expressions in them. > Yeah, I get it - saves a lot of time with heavily-templated setups and large projects.