c++/10541: Is NULL a valid pointer-type template argument?

Gianni Mariani gianni@mariani.ws
Tue Apr 29 17:56:00 GMT 2003


The following reply was made to PR c++/10541; it has been noted by GNATS.

From: Gianni Mariani <gianni@mariani.ws>
To: Wolfgang Bangerth <bangerth@ices.utexas.edu>
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<char*, someexternarrayname>
 >> or
 >> IType<char*, &someexternchar>
 >>
 >> Apparently, Comeau gets this wrong, allowing IType<char *,
 >> static_cast<char *>(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.
 
 
 
 



More information about the Gcc-prs mailing list