https://issues.dlang.org/show_bug.cgi?id=18928
--- Comment #6 from Manu <turkey...@gmail.com> --- I recall a few years ago reading some article about MSVC breaking their ABI to guarantee RVO, because C++11 and move semantics and all that. I guess it needed to be efficient and therefore justified guaranteeing RVO where previously it was an optimisation. It's probably the case that extern(C++) was implemented before C++11 made it to MSVC. --