3062. Unnecessary decay_t in is_execution_policy_v should be remove_cvref_t

Section: 26.3.5 [algorithms.parallel.overloads] Status: C++20 Submitter: Billy O'Neal III Opened: 2018-02-07 Last modified: 2021-02-25

Priority: 0

View all issues with C++20 status.

Discussion:

Our compiler throughput friends were hissing at us about throughput regressions in C++17 mode caused by the addition of the parallel algorithms' signatures. One change to reduce the throughput impact would be to remove unnecessary decay here, as LWG has done in other places recently.

[ 2018-02-13 Moved to Tentatively Ready after 7 positive votes on c++std-lib. ]

[2018-06 Rapperswil: Adopted]

Proposed resolution:

This wording is relative to N4713.

  1. Modify 26.3.5 [algorithms.parallel.overloads] as indicated:

    -4- Parallel algorithms shall not participate in overload resolution unless is_execution_policy_v<decayremove_cvref_t<ExecutionPolicy>> is true.