簡體   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