$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Robert Ramey (ramey_at_[hidden])
Date: 2004-03-12 13:28:31
John Maddock wrote:
>> Robert Ramey wrote:
>> a) Sprinkle #ifdef BORLAND in those 14 files
>> b) Tweak cpp_c_headers files
>> c) Or ? what?
>>
>> What is the least worst way to handle this?
>>
>> If I have to use a) what is the point of even having cpp_c_headers?
>Here's the problem: those headers were only supplied as a workaround for
>compilers that don't supply new style headers at all, they all use the
>following workaround:
>#include <string.h>
>namespace std{ using ::memcpy; } //etc
>However for conforming compilers this is defective for two reasons:
>It needlessly introduces C functions into the global namespace (including
><cstring> should not do that).
>It shouldn't compile at all: memcpy is already declared in std, the version
>in the global namespace is an alias introduced with a using declaration,and
>importing it back into std *should fail*.
>Now the interesting thing is, I know of only two vendors who are shipping
>std conforming C headers: Borland and Metrowerks. Since you don't mention
>the latter my guess is you're not testing with it ;-)
>The normal workaround that Boost libs have been using is:
>#include <cstring>
>#include <boost/config.hpp>
>#ifdef BOOST_NO_STDC_NAMESPACE
>namespace std{ using ::memcpy; }
>#endif
OK, I can live with this. But if cpp_c_headers has conditioned on the
compiler then what is the point of having it all? What use can it have?
Robert Ramey