【问题标题】:error C2039: 'binder2nd': is not a member of 'std' - Compiler Error with Eigen错误 C2039:“binder2nd”:不是“std”的成员 - 带有 Eigen 的编译器错误
【发布时间】:2019-11-12 19:05:46
【问题描述】:

在 Visual Studio 中使用 (Debug/x64) 编译期间出现以下错误。

1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2039: 'binder2nd': is not a member of 'std'
1>  c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/arch/CUDA/Half.h(614): note: see declaration of 'std'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2065: 'binder2nd': undeclared identifier
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2974: 'Eigen::internal::functor_traits': invalid template argument for 'T', type expected
1>  c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/util/XprHelper.h(147): note: see declaration of 'Eigen::internal::functor_traits'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2988: unrecognizable template declaration/definition
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2143: syntax error: missing ';' before '>'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): error C2059: syntax error: '>'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(79): error C2143: syntax error: missing ';' before '{'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(79): error C2447: '{': missing function header (old-style formal list?)
1>c:\users\ui2\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2039: 'binder1st': is not a member of 'std'
1>  c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/arch/CUDA/Half.h(614): note: see declaration of 'std'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2065: 'binder1st': undeclared identifier
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2974: 'Eigen::internal::functor_traits': invalid template argument for 'T', type expected
1>  c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(78): note: see declaration of 'Eigen::internal::functor_traits'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2988: unrecognizable template declaration/definition
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2143: syntax error: missing ';' before '>'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(82): error C2059: syntax error: '>'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(83): error C2143: syntax error: missing ';' before '{'
1>c:\users\ui\desktop\eigen-eigen-323c052e1731\eigen\src/Core/functors/StlFunctors.h(83): error C2447: '{': missing function header (old-style formal list?)
1>CCalcInverse.cpp(94): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data

我只包含来自 Eigen 的头文件并编译。

【问题讨论】:

  • 如果你放了一些导致这个错误的代码,人们会感激的。 :)
  • 您使用什么 MSVC 版本?宏 __cplusplus_MSC_VER 的值是多少?
  • 感谢您的反应。我使用 Visual Studio 2015。但我没有代码。我只有以下内容:#include #include #include
  • __cplusplus = 199711L ; _MSC_VER = 1900
  • 如果您在包含 Eigen 之前手动 #include <functional> 是否编译?使用 c++98,binder2nd 应该仍然存在。

标签: eigen


【解决方案1】:

在我的情况下,这似乎是VS2019的一个错误,我将c++ language standard/std:c++latest切换到std:c++20std:c++17,然后问题就消失了。

我猜这样做会清除一些编译器宏。

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多