
Markus Schöpflin <markus.schoepflin@comsoft.de> writes:
David Abrahams wrote:
Markus Schöpflin <markus.schoepflin@comsoft.de> writes:
What would you consider the correct way then? IMO we have three options.
1. Only use "-std strict_ansi". This means that the C header files (#include <c...>) included by boost libraries only define exactly those names specified in the C++ standard and nothing else. This would means changes to at least test, fs, regex and probably more libs. OTOH, this would mean that those libs are more conforming afterwards.
Here is the output of a configure run with the options "-pthread -tlocal -std strict_ansi":
#define BOOST_MSVC6_MEMBER_TEMPLATES #define BOOST_HAS_UNISTD_H #define BOOST_HAS_SCHED_YIELD #define BOOST_HAS_PTHREADS #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE #define BOOST_HAS_PTHREAD_DELAY_NP #define BOOST_HAS_PARTIAL_STD_ALLOCATOR #define BOOST_HAS_NRVO #define BOOST_HAS_NL_TYPES_H #define BOOST_HAS_LONG_LONG #define BOOST_HAS_GETTIMEOFDAY #define BOOST_HAS_DIRENT_H
(No sigaction (XSH4.0), no nanosleep (P1003.1b), and no clock_gettime(P1003.1b), to get those you have to define _XOPEN_SOURCE or _POSIX_SOURCE or some such.) IMO this is the right thing to do, including making those #defines as neccessary.
Should these defines be done by the user when compiling boost or by boost itself, therefore enforcing a particular value for them?
Boost should detect the compiler settings as far as possible. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com