[英]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.