That's a very interesting question, thanks!
@Christian-Ehrlicher said in Including qfutureinterface.h cause compile error "Error C7683 you cannot create a reference to 'void'":
a more recent version of this header to see if it was fixed
No dice on that, the void specialization is there even up to Qt 6.9 - https://github.com/qt/qtbase/blob/dev/src/corelib/thread/qfutureinterface.h#L510
@Christian-Ehrlicher said in Including qfutureinterface.h cause compile error "Error C7683 you cannot create a reference to 'void'":
a c++ construct which is no longer accepted with a recent compiler
The thing is, that void references are not, and never were, valid in C++. However they are not an error in any compiler I checked if they only come up in an uninstantiated template, including in explicit specialization as long as it doesn't actually get used. Including in MSVC in regular C++ mode: https://godbolt.org/z/rroMY86zb
But the moment MSVC gets put into C++/CLI mode, it becomes an error - https://godbolt.org/z/eWeEvPqK9
I don't know nearly anything about C++/CLI but it appears that it has some different rules regarding template instantiation (though it shouldn't be that surprising, hybrid languages like C++/CLI and Objective-C++ are not C++, they are different languages). Some template trickery that C++ uses appears to be incompatible with those rules.
@LJN_leaper I'm not sure where that leaves you. Maybe you can file a bug report, but direct use of QFutureInterface is already a quite advanced use case. Your best bet is probably to try and isolate its' use into a pure C++ file of your project.