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.
Trying to use any of the convert functions results in an ambiguous call compile error on MSVC. Here is an example:
This is because the
Eigen
namespace contains some implementations oftoMsg
andfromMsg
. These implementations seem to be required on other compilers like Clang and GCC because of something called two-phase name lookup, which is explained in a comment in the code as well as this Microsoft blog post.However, as stated in that blog post, two-phase name look up is not enabled by default on MSVC because it was recently added. In order to enable it, the compiler flag
/permissive-
needs to be used. With that flag, the existing code does compile, but having to use a compiler flag just to use this library doesn't sound ideal.Instead, I think it would be better to just not have those implementations in the
Eigen
namespace for MSVC as I have done.