oneTBB icon indicating copy to clipboard operation
oneTBB copied to clipboard

Use of std::invoke to run the body in algorithms and graph nodes

Open kboyarinov opened this issue 3 years ago • 0 comments

Description

Change the execution of the body in TBB algorithms and Flow Graph nodes to use std::invoke instead of operator(). It allows to pass pointers to non-static member functions and non-static member objects as a body. Affected components:

  • parallel_for
  • parallel_reduce
  • parallel_deterministic_reduce
  • parallel_for_each
  • parallel_scan
  • parallel_pipeline
  • function_node
  • multifunction_node
  • async_node
  • sequencer_node
  • join_node with key_matching policy

Fixes # - issue number(s) if exists

  • [ ] - git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details)

Type of change

Choose one or multiple, leave empty if none of the other choices apply

Add a respective label(s) to PR if you have permissions

  • [ ] 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

  • [x] added - required for new features and some bug fixes
  • [ ] not needed

Documentation

  • [ ] updated in # - add PR number
  • [x] needs to be updated
  • [ ] not needed

Breaks backward compatibility

  • [ ] Yes
  • [x] No
  • [ ] Unknown

Notify the following users

List users with @ to send notifications

Other information

kboyarinov avatar Aug 22 '22 14:08 kboyarinov