Workaround for compilation failure on MSVC #30
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 commit depends on
#27.
There is implementation divergence as to whether the following code is
accepted:
It is accepted by GCC and Clang, and rejected by MSVC and sometimes
by EDG: https://godbolt.org/z/dW964rqec
Because the calculation of the iterator_category depended on code of
this form, previously, MSVC would fail to compile iterator_interface
with this error:
error C3539: a template-argument cannot be a type that contains 'auto'
In order to work around this issue, the static member function-based
metaprogramming has been replaced with the use of std::conditional_t.
After this change, MSVC successfully compiles and runs all the tests.