PR #22822: Fix ambiguous constructor call in SourceTargetPairs initialization #23044
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.
PR #22822: Fix ambiguous constructor call in SourceTargetPairs initialization
Imported from GitHub PR #22822
Description
Resolve a build failure (with GCC-11) in
collective_permute_cycle_test
caused by an ambiguous constructor call when initializingSourceTargetPairs
with an empty list ({{}}
).Issue
When calling
SourceTargetPairs({{}})
, the compiler could not determine whether to use thestd::vector<std::pair<int64_t, int64_t>>
constructor or the default copy/move constructors, leading to an error:Solution
initializer_list
constructor forSourceTargetPairs
to properly handle{}
and{{src, tgt}}
initializations.SourceTargetPairs()
instead ofSourceTargetPairs({{}})
, ensuring clarity and correctness.This fix ensures proper initialization and eliminates ambiguity
Tested with GCC-11
Copybara import of the project:
--
f97c38d by Alexander Pivovarov [email protected]:
Fix ambiguous constructor call in SourceTargetPairs initialization
Merging this change closes #22822
FUTURE_COPYBARA_INTEGRATE_REVIEW=#22822 from apivovarov:fix_source_target_pairs f97c38d