繁体   English   中英

C++ 模板:VS2017 中的 C2143 错误但在 VS2013 中编译

[英]C++ templates: C2143 error in VS2017 but compiles in VS2013

我有这个在 VS2013 中编译的代码片段,但在 VS2017 中给了我 C2059 错误。

template <typename ArgumentType>
class MyFunction: public std::unary_function<ArgumentType, ArgumentType>
{
// rest of the code here
}

错误 C2143:Syntaxfehler:Es fehlt "," vor "<"

我在这里查找了错误的文档,但无法找出错误的原因。

我试过

template <typename ArgumentType>
class MyFunction: public std::unary_function<typename ArgumentType, typename ArgumentType>
{
}

并且仍然得到同样的错误。

std::unary_function在 C++11 中被弃用,在 C++17 中被移除。 如果您使用最新的 VS2017 并且没有选择与 C++17 不同的标准,则预计您的代码将无法编译,因为没有std::unary_function

通常不再需要std::unary_function和朋友了。 它所做的只是在您的类中添加两个 typedef,如果您真的想要,您可以手动完成。 但是也期望接受任意函子的代码不会依赖于某些成员 typedef 的存在,这就是为什么不需要任何这些的原因。 如果删除std::unary_function基类破坏了其他一些代码,正确的操作是修复该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM