Improve overload resolution to support P0608 #21
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.
This PR is an initial attempt at adding support for P0608R3: "A sane variant converting constructor" (https://wg21.link/p0608) so conversions like this should work as expected:
The tradeoff is that user-defined types convertible to
bool
may construct a different type. More information in P1957 (https://wg21.link/p1957)I'm fairly new to metaprogramming so any feedback on the implementation and/or correct use of Mp11 is much appreciated. I haven't yet added workarounds for the older MSVC versions and it's not yet thoroughly tested, but I can help write some test cases if you're interested in merging.