Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2004-08-12 07:16:40


Markus Schöpflin <markus.schoepflin_at_[hidden]> writes:

> Jonathan Wakely wrote:
>> On Wed, Aug 11, 2004 at 12:43:37PM +0200, Markus Sch?pflin wrote:
>>
>>>> - The use of "-std strict_ansi -nopure_cname" was causing all
>>>> kinds of troubles for me. I replaced that with
>>>> "-D__USE_STD_IOSTREAM -nousing_std" which seems to work far
>>>> better.
>> This seems a bit hasty IMHO. Surely it would be better to make Boost
>> work
>> with the compiler in strict_ansi mode than just force the compiler to act
>> in a non-standard way?
>
> 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.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk