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