From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2619 invoked by alias); 26 Mar 2003 14:26:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 2600 invoked by uid 71); 26 Mar 2003 14:26:01 -0000 Resent-Date: 26 Mar 2003 14:26:01 -0000 Resent-Message-ID: <20030326142601.2599.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, hg211@ural2.hszk.bme.hu Received: (qmail 31564 invoked by uid 48); 26 Mar 2003 14:16:51 -0000 Message-Id: <20030326141651.31563.qmail@sources.redhat.com> Date: Wed, 26 Mar 2003 14:56:00 -0000 From: hg211@ural2.hszk.bme.hu Reply-To: hg211@ural2.hszk.bme.hu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/10223: template trickery causes ICE (segmentation fault) X-SW-Source: 2003-03/txt/msg01802.txt.bz2 List-Id: >Number: 10223 >Category: c++ >Synopsis: template trickery causes ICE (segmentation fault) >Confidential: no >Severity: serious >Priority: low >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Wed Mar 26 14:26:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Geza Herman >Release: All gcc versions >Organization: >Environment: Linux 2.4.18 i686 Debian GNU/Linux >Description: The code sample causes ICE an all gcc versions I tried: gcc version 2.95.4 20011002 (Debian prerelease) gcc version 3.0.4 gcc version 3.2.3 20030316 (Debian prerelease) gcc version 3.3 20030314 (prerelease) The sample tries to get some meta-information: tries to determine if a class has a particular member-function. ('void save()' in this example) >How-To-Repeat: compile this sample: template class hasSaveFunction { private: struct Helper { struct False { char dummy[1979]; }; template struct dummy; template static char test(dummy<&T2::save> *); template static False test(...); }; public: static const bool value = sizeof(Helper::template test(0))==1 ; }; class Dummy { }; int main() { return hasSaveFunction::value; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: