Use the _Transparent concept and remove _Is_transparent
#5498
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.
#3736 added
_Is_transparentand_Transparentbut didn't use them.I think it's time to use the
_Transparentconcept for C++20-and-later-only code. And it seems less burdensome for compilers if_Is_transparent_vis changed to be implemented with a concept. After the changes,_Is_transparent_vwill be only necessary for<xtree>, so this PR moves_Is_transparent_vto that header.<flat_map>and<flat_set>will be changed in another PR.Theoretically,
_Is_transparentwould be useful in the cases whereconjunction(_v)ordisjunction(_v)is used. But I think there won't be such a case in MSVC STL - for new code it's probably better to use requires-clauses, and the uses of_Is_transparent_vin<xtree>seem stable enough. So I decide to remove it.