Our Clang IntelliSense uses Clang 6.0 that supports many of the C++20 features. That said, since it uses the headers directly from your toolchain, the toolchain must support C++20 as well and it should be selected via the “language standard” setting in project properties, as many toolchains default to a lower C++ language standard version.
I have problem when I switch to c++2a. It says for example “Error: unknown type name “‘BulkMotorSettings’; did you mean ‘std::BulkMotorSettings'” see attachment. For every type included from another file it says “Error: unknown type name ‘Class’; did you mean ‘std::Class”. When I switch back to c++17 it works as expected. Do you know where could be a problem? The project is compile successfully with c++17 and with c++2a. There is problem only with intellisense
If the compilation is working, most likely some parts of the platform headers use C++20 features that are not yet supported by our Clang IntelliSense engine. We are planning to release a major update to the engine in the next few months, so it should take care of it.
Until then, the only way to troubleshoot such issues would be to narrow them down to a specific broken identifier, checking where it is actually defined, and trying to move the definition around to see what triggers the issue. Most likely, IntelliSense stops parsing when it encounters a very specific language construct that it cannot work around, so the entities declared after it are not recognized. If you can locate a specific construct causing it, you can try wrapping it with #ifndef __SYSPROGS_CODESENSE__ so that the IntelliSense engine will ignore it.