Ошибка mlpack при сборке

Я получаю следующую ошибку после установки libmlpack-dev, включаю ее в свою программу и компилирую.

/usr/include/mlpack/methods/kmeans/kmeans_impl.hpp: In member function ‘void mlpack::kmeans::KMeans<MetricType, InitialPartitionPolicy, EmptyClusterPolicy, LloydStepType, MatType>::Cluster(const MatType&, size_t, arma::mat&, bool)’:
/usr/include/mlpack/methods/kmeans/kmeans_impl.hpp:178:20: error: call of overloaded ‘isnan(double&)’ is ambiguous
 if (isnan(cNorm) || isinf(cNorm))
                ^
/usr/include/mlpack/methods/kmeans/kmeans_impl.hpp:178:20: note: candidates are:
In file included from /usr/include/features.h:374:0,
             from /usr/include/x86_64-linux-gnu/sys/types.h:25

Может кто-нибудь подсказать, как это решить.

PS: я спросил об этом в https://askubuntu.com/questions/847048/mlpack-error-while-building

1 ответ

Это проблема с mlpack на старых версиях Ubuntu. Если вы обновите Ubuntu до более новой версии и обновите пакет mlpack, проблема должна быть решена. Но если вы не можете сделать это, вы можете напрямую редактировать файл /usr/include/mlpack/methods/kmeans/kmeans_impl.hpp так что линия

if (isnan(cNorm) || isinf(cNorm))

изменено на

if (std::isnan(cNorm) || std::isinf(cNorm))

и это должно решить проблему.

Другие вопросы по тегам