oneTBB icon indicating copy to clipboard operation
oneTBB copied to clipboard

Enable CTAD for blocked_rangeNd since C++17

Open rarutyun opened this issue 1 year ago • 4 comments

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

rarutyun avatar Oct 07 '24 20:10 rarutyun

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 avatar Oct 08 '24 13:10 kboyarinov

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).

rarutyun avatar Oct 08 '24 14:10 rarutyun

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.

kboyarinov avatar Oct 08 '24 14:10 kboyarinov

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 ;)

rarutyun avatar Oct 08 '24 14:10 rarutyun