Kenneth Porter wrote:
On 5/12/2022 5:30 AM, Andrey Semashev via Boost wrote:
This question seems to be unrelated to Boost, but in general you should avoid mixing different C++ versions in one application.
I'm branching off from the current discussion about the minimum supported C++ language version for Boost. If Boost goes C++14 and my customer is still on C++03, I'm concerned about my DLL being compatible with their EXE. (I don't expose Boost or STL in my headers. Nor do I expose C++ strings. Allocations don't cross the EXE/DLL boundary, using factory constructors and destroy methods.)
But I do worry about the ABI compatibility. According to MS, linking is allowed between compiler versions if the latest linker is used, but they don't say anything about language versions.
Recent versions of MSVC (2015 onwards) only support C++14 and above. There is no C++03 or C++11 mode. Previous versions didn't have modes at all. I believe that MS does support linking between code compiled with different language versions (14/17/20). They also support linking code compiled with 2015/2017/2019/2022. This isn't true for earlier versions (and may be untrue for future versions too.)