我有一段代碼,該代碼在運行std::vector<double> cats
並做這樣的事情:如何請使用isNaN作謂語功能爲std :: find_if(C++ 11)
std::find_if(cats.begin(), cats.end(), std::isnan<double>);
這個編譯在4.3之前的gcc下,但不再使用gcc 4.7.2編譯。我得到這樣一個錯誤:
error: no matching function for call to 'find_if(std::vector<double>::iterator, std::vector<double::iterator, <unresolved overloaded function type>)'
我如何能得到這個在新的gcc編譯?最好還在舊的gcc下?沒有擺脫stl和手動編寫循環當然。如果兩者都不可行,那麼新的gcc就足夠了,我將把這兩個實現都留在#define
之內。
'std :: isnan'??在C++ 11標準中,isnan是一個非模板函數。在C99中它是一個宏。 –
我確實讀過,但它以某種方式編譯 –
它曾經是早期版本的GCC中的模板。在GCC 4.7中有三個重載_and_整型 –