Work around noexcept-in-type-system VS2017 bug #316
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.
Fixes #302
TL;DR - as I recall from vague understanding in the past - is that MSVC's "noexcept in the type system" update for C++17 "infected" pre-C++17 compilations, specifically for
decltype
. From what I recall when this initially started to impact us,decltype
includesnoexcept
in the type, but that makes it impossible to assign/bind anything to such a function pointer since thenoexcept
gets dropped (as it should pre-C++17). VS2017 seems to be even more broken than this as allegedly even building with C++17 as the standard produces an error.This change explicitly declares the function pointer type so that the issue will not be observed with the buggy version of the compiler. Ideally, we could just drop the type and use
auto
, but that's also a C++17 feature :/