[1] https://duneroadrunner.github.io/scpp_articles/PoC_autotrans...
C++ also has it's own designated initializer like syntax.
It does indeed, but they are not compatible and at least the C atomics cannot be used from C++.
>C++ also has it's own designated initializer like syntax.
One that is far more limited. This is valid C, but not C++.
struct bar {
int a;
int b;
};
struct bar tmp = {
.b = 0,
.a = 0,
};In GCC and Clang it's quite relaxed since their C++ frontends pull in a couple of modern C features as non-standard C++ extensions, but MSVC has a strict separation between the C++ and C frontend and doesn't allow this sort of 'cross-pollution'.
As a quick example, this C99 code block has at least 4 features that don't work in C++:
https://github.com/floooh/sokol-samples/blob/91bd8c6f9f52149...
- taking the address of an adhoc-created struct in a function call
- random array access in struct initialization
- designator chaining in struct initialization
- designators can be out-of-order in C but not C++
...also using unions as different views on the same memory is actually useful sometimes.