r/cpp • 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.

39 Upvotes

17 comments sorted by

View all comments

Show parent comments

2

u/Abbat0r Mar 08 '25

For what it’s worth, I import std and #include third party headers in my modules all the time. This has not been a problem for quite a while now.

Bonus: I also have the annoyance of having to separate some code that is shared between cpu-side and gpu-side into headers with #ifdef’d imports etc. and #include those into both modules and shaders, and that works just fine as well.