From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23574 invoked by alias); 29 Apr 2003 17:56:00 -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 23549 invoked by uid 71); 29 Apr 2003 17:56:00 -0000 Date: Tue, 29 Apr 2003 17:56:00 -0000 Message-ID: <20030429175600.23548.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Gianni Mariani Subject: Re: c++/10541: Is NULL a valid pointer-type template argument? Reply-To: Gianni Mariani X-SW-Source: 2003-04/txt/msg01368.txt.bz2 List-Id: The following reply was made to PR c++/10541; it has been noted by GNATS. From: Gianni Mariani To: Wolfgang Bangerth Cc: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c++/10541: Is NULL a valid pointer-type template argument? Date: Tue, 29 Apr 2003 10:47:58 -0700 Wolfgang Bangerth wrote: >>I remember reading a while back that C/C++ considers the value 0 to be a >>valid value for any pointer type. Hence 0 CAN BE of type char *. >> >> > >Well, 0 is of type "signed int". It can be converted to any pointer type >implicitly. The question is whether the compiler is supposed to do >implicit conversions for template args. I don't think so. > > > >>Other compilers seem to take this value. >> >> > >icc doesn't, for example. > > In this posting: news://nntp.concentric.net:119/vatbv4b1hbd6d3@corp.supernews.com http://groups.google.com/groups?dq=&hl=en&lr=&ie=UTF-8&threadm=b8m2ve%243h4%40dispatch.concentric.net&prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26group%3Dcomp.lang.c%252B%252B >According to 14.3.2/1 a pointer template argument must be a pointer to >> an object with external linkage. 0 is certainly not such a pointer. >> >> Generally, you'll need >> >> IType >> or >> IType >> >> Apparently, Comeau gets this wrong, allowing IType> static_cast(0)>. > > There is an open issue 354 on this, BTW. I would think that Comeau is just running ahead of the pack (along with EDG, MS, Borland, and Cfront -- as described in the issue). Gcc and Sun are the pack. Seems like this is an open issue.