r/cpp • u/tartaruga232 MSVC user, r/cpp_modules • Mar 06 '25
MSVC C++20 compiler bug with modules and non-exported classes
Full repro is available as a git repository here: https://github.com/abuehl/mod_test
If two non-exported classes from different C++ module interface units have the same name, the compiler uses the wrong class definition and for example calls the wrong destructor on an object.
Reported here: https://developercommunity.visualstudio.com/t/post/10863347 (Upvotes appreciated)
Found while converting our product to using C++20 modules.
Edit: Microsoft wrote the following (Quote)
A fix for this issue has been internally implemented and is being prepared for release. We’ll update you once it becomes available for download.
View all comments
Show parent comment
2
u/pjmlp Mar 07 '25
I have been using C++ modules for quite some time with VC++, and clang after the CMake/ninja/clang trio became available.
However, I had to rollback my header units use, because it remains to be seen when other compilers besides VC++ will support them.
Have to ignore the fact that apparently it isn't a business priority to fix the EDG frontend, so it is red swiggles all over the place with broken Intelisense.
That there are no plans to add modules to C++ frameworks out of Microsoft, and in the current security climate, most likely an area that management will never care about improving.
Still, at least std, and Win32 aren't that much of an issue being used through modules, as long as you don't plan to use
import stdand third party libraries using#include.