|
Boost : |
From: Julio M. Merino Vidal (jmmv84_at_[hidden])
Date: 2005-06-19 12:52:36
Hi all,
while developing some code for Boost, I've had to add some more tests to
the configuration headers so that BOOST_NO_STDC_NAMESPACE gets defined
when some functions cannot be found (e.g., std::strdup, which is missing
under NetBSD). This is irrelevant, because this symbol could get
defined in a future by other changes in Boost.
The problem is that when BOOST_NO_STDC_NAMESPACE is defined under
NetBSD, Boost.Iostreams does not work any more and breaks the build of
programs using it. Consider the following code example:
-----
#define BOOST_NO_STDC_NAMESPACE
#include <boost/iostreams/device/file_descriptor.hpp>
int main(void) { return 0; }
-----
When building it, I get:
-----
$ g++ -I/home/jmmv/opt/include test.cc
In file included
from /home/jmmv/opt/include/boost/iostreams/positioning.hpp:19,
from /home/jmmv/opt/include/boost/iostreams/device/file_descriptor.hpp:24,
from test.cc:2:
/home/jmmv/opt/include/boost/iostreams/detail/config/codecvt.hpp:70:
error: `
codecvt' not declared
-----
The problem arises because codecvt does not exist in the global
namespace under NetBSD, although it does inside std::. Therefore, the
'using ::codecvt' line (the one that triggers the error) breaks the
build.
I don't know how this should be fixed, so I'm just sending a bug
report. Maybe the BOOST_NO_STDC_NAMESPACE definition should be made
more fine grained, so that defining it due to the lack of a function
does not affect others that may exist?
Should I file a bug report or is this message enough?
Thanks,
-- Julio M. Merino Vidal <jmmv84_at_[hidden]> http://www.livejournal.com/users/jmmv/ The NetBSD Project - http://www.NetBSD.org/
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk