stellar-deprecated / stellard

INACTIVE. Server in the Stellar network. Maintains the distributed ledger. Introduces and validates transactions. This repo is not in active development, it is being replaced by stellar-core.
Other
271 stars 60 forks source link

Update build doc to require boost 1.55 #192

Closed matschaffer closed 9 years ago

matschaffer commented 9 years ago

Using boost >= 1.56.0 causes this error:

In file included from src/ripple_app/ledger/Ledger.h:33:0,
                from src/ripple_app/ledger/LedgerMaster.h:25,
                from src/ripple_overlay/impl/PeerImp.cpp:11:
src/ripple_app/tx/TransactionMeta.h: In member function 'bool ripple::TransactionMetaSet::hasDeliveredAmount() const':
src/ripple_app/tx/TransactionMeta.h:114:17: error: cannot convert 'const boost::optional<ripple::STAmount>' to 'bool' in return
         return mDelivered;
                ^
scons: *** [build/obj/src/ripple_overlay/impl/PeerImp.o] Error 1
scons: building terminated because of errors.

Given feedback from @syrenity and cross-checked in the commit history from http://savannah.gnu.org/bugs/?43198:

A breaking change was introduced in boost 1.56 [1]: the implicit conversion to bool was removed. Instead, an explicit operator bool was provided. The getters were also changed, so we cannot use them and retain compatibility with older boost versions.

By putting the would-be boolean expression in a conditional, we now invoke the explicit operator bool (also known as contextual conversion to bool) for boost >= 1.56 and the implicit conversion to bool for < 1.56.