xroche wrote:

> Please check what MSVC actually does here. Some brief testing seems to show 
> that it does straight left-to-right for array indexing, instead of the mixed 
> ordering you've implemented.

You're correct right for the simple case.

[Demo with MSVC 
14.51](https://godbolt.org/clientstate/eNqVVFFvgjAQ_itNHxaNJIbNEYe_YC_zYcte1DRdqa4MW9IWNCHut6-0gCA4Ywihd_fdx_W7awuoqFJMcAXDVQFZBEPfgwnmuwzvKAwhmUygB5XIJClNpWVGNHjlET2CYs0BYFyDHCcZXZSWDYzGrTUx3HXCgwv8nlEn87rYHv9QtGVSaRtoORU1HJH1lj-zPtY1Y2uueVXeh2Q5w8nyK6bGGiiztERKJdZCrjYj_c3URZKiydazOOY-8fiuTFc_qxdxvdku1havnavZUWUjsx6NQQEk1ZnkF9hVLYPXKLBZgFOXgSRYqVscleZeV2xH1ij6Jri-JeolphqDnttNRI-xHo4rNEPC9zju6dqV5GuN68GtXLzxNu07uwY72M74t4ktnuE-9pn-a6U5xUTsU5ZQeT7rMCdpinL_BT376PPdn6MAHYOZwYpUu1sBTpWOQnMNPD6lkuaMHsB06YPpwZ_NgwCeNub5A6plgOs)
 : `object, i, j` with a trivial object and `int` indices.

In the other three cases, with a nontrivial by-value object or indices, MSVC 
emits `j, i, object`. With `/w14866`, it reports 
[C4866](https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/c4866?view=msvc-170)
 for each.

AFAIU [C++23](https://eel.is/c++draft/expr.sub) requires the object first but 
leaves index order open. I've changed Clang's overloaded `operator[]` notation 
to use `object, i, j`. `operator()` still uses ABI order after the object.



https://github.com/llvm/llvm-project/pull/215479
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to