This repository has been archived by the owner on Jan 7, 2019. It is now read-only.
[architecture] Fix implicit conversion of Flags #230
Merged
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.
Fix of the issues discussed in #223. Conversion of Flags to an associated FlagsGroup will now work correctly even when multiple enum constants or flag variables are combined with logical operators.
The bool conversion of flags classes is implemented in terms of
explicit operator bool()
to fix issues with function overloading on Flags parameters.The explicit operator will only allow implicit casts where contextual conversion takes place, which is more restrictive than the previous implementation. It will occur in the following contexts:
This may break user code that requires implicit bool conversions on other occasions, for instance in return statements but I don't expect a lot of people to rely on that. Outside of the flag implementation itself I only changed 5 lines of code in xpcc for this reason.
I had a look at the code that is not build in examples and unittests but uses flags. These changes shouldn't do any harm there but I wouldn't bet my life on that.