If the order of <common/defines.h> and c++ header will be wrong the
compilation will be broken.
v2: rename __ch_has_feature to ch_has_feature to fix -Wreserved-id-macro
v3: do not fallback to 0
__has_feature supported only by clang.
But libcxx/libcxxabi overrides it to 0:
$ fgrep -r 'define __has_feature' contrib/libcxx*
contrib/libcxx/include/__config:#define __has_feature(__x) 0
contrib/libcxxabi/src/demangle/DemangleConfig.h:#define __has_feature(x) 0
Thus the checks for __has_feature will be wrong, undefine it again to
avoid such issues.
This will also fix building with sanitizers under gcc (before this patch
BOOST_USE_UCONTEXT wasn't set for sanitizers).
* common/Types.h → common/types.h
Also split Core/Defines.h and merge with common/likely.h
* Improve cctz contrib
* Fix ALWAYS_INLINE and unbundled build
* Update Dockerfile from master
* Fix test for unbundled library