Boost logo

Boost :

From: Matthias Schabel (boost_at_[hidden])
Date: 2006-09-04 19:56:10


>>> I also cannot build the tests. There are at least two problems:
>>>
>>> 1) The #include directives inside the test code assume that the
>>> directory "units" is inside a directory called "mcs". So I
>>> created the
>>> directory "mcs" and moved "units" into it.
>>
>> Right - believe it or not, this is included in the main page of the
>> documentation,
>> in the "Installation" section...
>
>
> I didn't see that. But wouldn't it make sense for you to just
> distribute
> everything with units already inside a directory called "mcs"?

OK, this is done in the new mcs_units archive.

>>> 2) There is at least one #include directive that refers to the
>>> directory
>>> "mcs/utility", and it tries to include a header file called
>>> "type_traits.hpp", which is a file that I do not see in the
>>> distribution.
>>
>> This is fixed by the two files I attached in the previous message -
>> in any case,
>> I believe the only dependency on <mcs/utility/type_traits.hpp> is in
>> unit_test_1.cpp,
>> so the other four tests should work...
>
> Not. unit_test_4.cpp and unit_test_5.cpp have the same dependency.

These files didn't actually depend on the header anyway, but it has been
fixed.

> Other observations:
> 1) unit_test_1.cpp depends on the boost.regex library. (Some of us
> have
> never built the boost.regex library. My solution is just to skip
> unit_test_1.cpp for now.)

If you don't #define MCS_USE_DEMANGLING, this should not happen now.
Code outputting typename information will then just output the
mangled name
instead (typeid(var).name()), which is not super helpful, generally
speaking...

> 2) The unit tests appear to build using gcc 3.4.4, but not with
> VC8.0. I
> get the following:
>
> unit_example_2.cpp
> C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\iterator(589) :
> error C2872: 'size_t' : ambiguous symbol
> could be 'predefined C++ types (compiler internal)(19) :
> unsigned int size_t'
> or '..\..\..\..\boost\boost/mpl/aux_/integral_wrapper.hpp
> (81) :
> boost::mpl::size_t'

This looks like a symbol collision caused because I had a "using
namespace boost::mpl;"
at the top of the dimension.hpp file. I moved this inside the
boost::units scope - maybe that
will help. I'd rather not have to explicitly specify the namespace
for every MPL call as that
will make the code hard to read, but if this problem is not easy to
work around on VC++,
I may have to do it anyway...

Thanks for the input -

M


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