SERVER-62498: non-const unique_function should not convert to std::function e…
#1437
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
…ven after LWG-2774
LWG-2774 changes
std::function's converting constructor to accept its argument by forwarding reference. With that change implemented, that constructor becomes a better match for non-constunique_functionarguments thanunique_function'sconst-qualified deleted conversion operator template tostd::function. As a result,std::is_convertible_v<unique_function<T>, std::function<T>>changes fromfalsetotruewhen Standard Libraries implement LWG-2774. (MSVC recently implemented this LWG issue in microsoft/STL#2098 and noticed theunique_functiontest failing as a result.)I believe the fix is to add another deleted conversion operator template that is not
const-qualified tounique_function. This makes the test pass for me locally with the updated STL.