I am not an expert on clang but is it possible that the pre 3.8 versions of clang used libstdc++ and starting with 3.8 it started using libc++. I do not know if the original poster was on a Mac or not, but I think that libc++ is native to Mac but not to any other OS.
I also found this on "libc++" C++ Standard Library : libc++ is a new implementation of the C++ standard library, targeting C++11.
These problems are definitely tied to C++11, and any framework that brings in C++ 11.
Can one of the posters getting the problem with store() please post their config.log file.
Also, lets us know how you are compiling BDB, what compile time options are being used.
Also, what is the exact platform you are running on.
While we can reproduce this in-house on linux, we are have to force it to happen.
It would be great if one of the posters getting the error on store posts their config.log file, passes along what compile time options they are using, describes what platform they are using, etc.
We cannot reproduce the store error unless we force it to happen by setting the right compile time flags.
This is the config.log when building against libc++3.8.1 on macOS https://gist.github.com/LnL7/f34a1f183dae610ef319fd0468577409. We currently use libc++-3.7.1 in our package manager and that works fine.
Thank you for the config.log. The '--enable-dbm' option you used explained why you had the store error.
Just a side node, the --enable-dbm option is used to make Berkeley DB API-compatible with the legacy DBM and NDBM interfaces. If your application doesn't use those interfaces, there is no need to specify that option.
Allright I'll try that, hopefully none of our packages need the legacy interfaces.
The __atomic_compare_exchange was also renamed in more recent versions, so the only thing that remains is atomic_init.