Andrey Semashev wrote:
In practice, the present situation with Boost.System is that you can link 03 to 11, 11 to 03, 03 and 11 to 14, but not 14 to 03 or 11. This was the best I could do.
Sorry, but I don't think this is acceptable. It prevents C++03 users from linking with system Boost.System (provided that the system Boost is compiled with default gcc options, which enable C++14).
As I said, linking 03 (user code) to 14 (Boost.System) works. The reverse does not. As I also said, the reverse occurs when the compiler is g++ 5 or clang++, where the default is 03. But in general, there's no practical way to support mixed standards unless we change something in the way we do things, and I don't know what. If you compile library A with C++03 and library B with C++11 and both use shared_ptr, in a program that uses both there will be an ODR violation because shared_ptr will use std::atomic when present (in B) and will not use it when not (in A).