standards-proposals
standards-proposals copied to clipboard
Accessor aliases
In order to reduce the verbosity of programming with SYCL accessors, this proposal aims to reduce the number of template parameters to just 2 from the current 5. It achieves this by slightly revising how to treat read-only data and adding alias templates based on the access target.
- Main changes
- Default accessor template parameters
- Simplify access modes
- Alias templates based on access target
- Extend the handler class
- Accessor alias templates
- `constant_buffer_accessor
host_accessor
- Treat
const Tthe same asaccess::mode::read- Simplifies a lot of code
- Define implicit conversions for equivalent types
- Implicit conversions that add
const - Overload for
handler::requirethat also takes an access mode
- To weaken the access mode
- Default all accessor template parameters
- Expect the data type
- Default to an accessor to global buffer with read-write access
- Assumes accessors can be a placeholder without template parameter
- Discussed some considerations and alternatives
- Examples of reduced verbosity
That looks like a good simplification. You could also add some CTAD if compiled with C++17 or higher.
@keryell I've greatly simplified the proposal, and I've added a section on CTAD. I think I would need to add deduction guides to the accessor class, I might still add that. There's also the problem that CTAD doesn't work on alias templates in C++17, so maybe I should add something for C++20 as well?
That looks good. Probably you need to coordinate with Intel to unify the simplifications they are pushing for too.
I've pushed revision 0.3, which focuses a lot more on CTAD and makes host_accessor a separate type