Boost logo

Boost :

Subject: [boost] [config] Boost and the Intel (Linux) compiler
From: Bob Summerwill (bob_at_[hidden])
Date: 2016-05-06 15:17:59


I am a developer on the Ethereum C++ client (
https://github.com/ethereum/webthree-umbrella) and have been working with
an external developer on adding support to the codebase for building with
the Intel Compiler on Ubuntu.

Here is the full log of pain :-)

    https://github.com/ethereum/webthree-umbrella/issues/396

We've already merged various changes, and we appear to be getting down to
the real hard ones, which are now mainly clustered around build issues with
boost::multiprecision and seeming limitations with the Intel compiler and

Like so:

/home/libweb3core/libdevcore/Base64.h(48): error: no suitable conversion
function from
"boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<160U,
160U, boost::multiprecision::unsigned_magnitude,
boost::multiprecision::unchecked, void>, boost::multiprecision::et_off>" to
"unsigned int" exists unsigned r = (unsigned)(a - a / 36 * 36); // boost's
% is broken ^ detected during instantiation of "std::string
dev::toBase36(const dev::FixedHash<N> &) [with N=20UL]" at line 114 of
"/home/libethereum/libethcore/ICAP.cpp"

This appears to be the key observation:
https://github.com/ethereum/webthree-umbrella/issues/396#issuecomment-206590055

"In summary, the intel platform supports this "convert_to" member function,
but does not support implicit conversion of boost multiprecision types"

Has anybody worked with Boost and the Intel compiler who might have some
further insight into whether there is some way in which the Intel compiler
"warts" can be handed within Boost?

Or are we stuck with these nasty diffs/workarounds?

https://github.com/ethereum/libethereum/pull/224/files
https://github.com/ethereum/libweb3core/pull/68/files

Cheers,
Bob Summerwill
Developer, Ethereum Foundation

-- 
bob_at_[hidden]

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