-
A::Bcould be a constructor name givenusing A = B;, but we don't parse those as constructors.We could add this behind a flag, not supported now for simplicity.
-
We always accept the C-only spelling
restrictin addition to__restrictand__restrict__.There's currently no flag to disable this, for simplicity, but we could add one.
-
Only GCC accepts trailing return type arrow in parentheses in some simple cases:
using T = auto(() -> int);
Clang and MSVC reject this. We also reject this for simplicity.
-
Only GCC accepts things like:
using A = int; struct B {}; A::B::* x;
Clang and MSVC reject this, and so do we.
This is impossible to parse without semantic information or without producing a long list of ambiguities.
Note that all compilers accept
int::A::* x;, and we try to support this case too.