我有这个在 VS2013 中编译的代码片段,但在 VS2017 中给了我 C2059 错误。
template <typename ArgumentType>
class MyFunction: public std::unary_function<ArgumentType, ArgumentType>
{
// rest of the code here
}
Run Code Online (Sandbox Code Playgroud)
错误 C2143:Syntaxfehler:Es fehlt "," vor "<"
我在这里查找了错误的文档,但无法找出错误的原因。
我试过
template <typename ArgumentType>
class MyFunction: public std::unary_function<typename ArgumentType, typename ArgumentType>
{
}
Run Code Online (Sandbox Code Playgroud)
并且仍然得到同样的错误。
std::unary_function在 C++11 中被弃用并在 C++17 中被移除。如果您使用最新的 VS2017 并且没有选择与 C++17 不同的标准,则预计您的代码将无法编译,因为没有std::unary_function.
一般不再需要std::unary_function和朋友了。它所做的只是在您的类中添加两个 typedef,如果您真的想要,您可以手动完成。但是也期望接受任意函子的代码不会依赖于某些成员 typedef 的存在,这就是为什么不需要任何这些的原因。如果删除std::unary_function基类破坏了其他一些代码,正确的操作是修复该代码。
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |