Enable CTAD for blocked_rangeNd since C++17
Description
Enable CTAD for blocked_rangeNd since C++17 by making the implementation through the inheritance rather than through alias template.
Type of change
- [ ] bug fix - change that fixes an issue
- [X] new feature - change that adds functionality
- [ ] tests - change in tests
- [ ] infrastructure - change in infrastructure and CI
- [ ] documentation - documentation update
Tests
- [ ] added - required for new features and some bug fixes
- [X] not needed
Documentation
- [ ] updated in # - add PR number
- [ ] needs to be updated
- [X] not needed
Breaks backward compatibility
- [x] Yes
- [x] No
- [ ] Unknown
Technically, the change breaks backward compatibility but this is a preview functionality, where breaking change is acceptable
Notify the following users
@pavelkumbrasev, @vossmjp, @akukanov, @isaevil, @aleksei-fedotov, @kboyarinov
Other information
Of course, this PR should take into account the changes made in #1449. I cloned 1449 and checked my modifications there. Didn't find any broken tests (I might miss something, though).
Please provide feedback on my PR if anybody sees any issues with proposed changes
I have tried to test the implementation locally and found that it enables the CTAD only for copy/move constructors of blocked_rangeNd.
I had an idea on how can CTAD for the main constructor can be also enabled. I have opened a separate PR #1525 to add tests and this explicit deduction guide.
I have tried to test the implementation locally and found that it enables the CTAD only for copy/move constructors of
blocked_rangeNd. I had an idea on how can CTAD for the main constructor can be also enabled. I have opened a separate PR #1525 to add tests and this explicit deduction guide.
@kboyarinov, I know that. The idea of my PR is to enable CTAD in principle, because it doesn't completely work with aliases prior C++20. I didn't write the deduction guides (which is just a "substory" of CTAD) intentionally. It's a different story and I propose to solve it differently. As far as I can tell, your PR doesn't enable everything that necessary (at least in my mind).
I have tried to test the implementation locally and found that it enables the CTAD only for copy/move constructors of
blocked_rangeNd. I had an idea on how can CTAD for the main constructor can be also enabled. I have opened a separate PR #1525 to add tests and this explicit deduction guide.@kboyarinov, I know that. The idea of my PR is to enable CTAD in principle, because it doesn't completely work with aliases prior C++20. I didn't write the deduction guides (which is just a "substory" of CTAD) intentionally. It's a different story and I propose to solve it differently. As far as I can tell, your PR doesn't enable everything that necessary (at least in my mind).
OK, no problem. In that case the patch looks fine for me, except for copyright years that should be actualized.
OK, no problem. In that case the patch looks fine for me, except for copyright years that should be actualized.
Thanks. And as you can guess, copyright issue is a 10 seconds fix ;)