▲ | einpoklum 7 months ago | |||||||||||||
> This is not a problem that can be solved by the standards committee SysV/Itanium/Win64 knows nothing about the abstract difference between a 64-bit value and a 64-bit value inside a class instance. Don't see what prevents the solution from the language side. > Universally supported as `__restrict` 1. That's not C++. If we're talking about what compilers can offer outside the language standard - that's a different discussion. We don't have to standardize, then, just get a working implementation somewhere and lobby other compiler-makers to adopt it. A compiler might implement Baxter's "safe mode" idea as a non-standard extension, for example. 2. Even the compilers supoorting `__restrict` only support it for parameters of functions - nowhere else. | ||||||||||||||
▲ | nickelpro 7 months ago | parent [-] | |||||||||||||
> Don't see what prevents the solution from the language side. The standard has nothing to say about calling convention. Calling conventions are defined by the ABI standards. unique_ptr is a class template, how a class is passed between routines is defined by ABI standards, ergo how unique_ptr is passed between routines is defined by the ABI standards. I don't know what else you're implying here. Unless you're saying we should have language-level smart pointers, not class templates, in which case yes that's an awful idea. > That's not C++... If you're arguing about some abstract, Platonic ideal of C++ that is divorced from the actual implementations that exist in the world, I don't know what your point is. We write code to be compiled by compilers that exist, not printed out and contemplated in a museum. The compilers support __restrict, people use it all the time, so its not a problem. > Even the compilers... Where else do you want it? What would its meaning even be to something like a member variable? Restrict is pointless in any scenario that doesn't involve a potentially aliasing ABI boundary, ie, function parameters. In every other scenario it is ignored. | ||||||||||||||
|