Fixes/workarounds for clang 3.5-3.9 #778
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.
This PR adds fixes/workarounds for two problems that cause compilation failures with clang 3.5-3.9:
boost::variantand parameter pack. The solution to that is to useBOOST_VARIANT_ENUM_PARAMSin specializations. The list of types can be analyzed with variadic templates afterwards.std::is_constructiblefor 2dmodel::pointand 3 parameters causes the compilation error related to the initialization of 2-element array with too many elements. The solution to that is to enable the constructor only if the number of arguments is lesser or equal toDimension.See the regression matrix for details.
Note that the error 2 was caused partially by this change to
cross_product: #745in particular by specific
std::is_constructiblechecks for 3 parameters. I think they are incorrect themselves and should be changed. There is a PR for that already: #747