mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
japanese/zinnia: fix build with clang 16
Since clang 16 (and gcc 11) the default C++ standard is now gnu++17. Because japanese/zinnia's build infrastructure does not explicitly set its C++ standard, this leads to an error: svm.cpp:50:10: error: no member named 'random_shuffle' in namespace 'std' std::random_shuffle(index.begin(), index.begin() + active_size); ~~~~~^ This is because std::random_shuffle has been removed from C++17. An suitable replacement is std::shuffle, using a std::random_device in combination with std::mt19937 as the random number engine. PR: 271953 Approved by: fernape MFH: 2023Q2
This commit is contained in:
parent
6c0c4b72bb
commit
abdd4cf0e5
@ -1,6 +1,6 @@
|
||||
PORTNAME= zinnia
|
||||
PORTVERSION= 0.06
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= japanese
|
||||
MASTER_SITES= SF
|
||||
|
||||
|
24
japanese/zinnia/files/patch-svm.cpp
Normal file
24
japanese/zinnia/files/patch-svm.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
--- svm.cpp.orig 2009-04-05 11:40:29 UTC
|
||||
+++ svm.cpp
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
+#include <random>
|
||||
#include "feature.h"
|
||||
|
||||
namespace zinnia {
|
||||
@@ -44,10 +45,12 @@ bool svm_train(size_t l,
|
||||
}
|
||||
|
||||
static const size_t kMaxIteration = 2000;
|
||||
+ std::random_device device;
|
||||
+ std::mt19937 engine(device());
|
||||
for (size_t iter = 0; iter < kMaxIteration; ++iter) {
|
||||
double PGmax_new = -kINF;
|
||||
double PGmin_new = kINF;
|
||||
- std::random_shuffle(index.begin(), index.begin() + active_size);
|
||||
+ std::shuffle(index.begin(), index.begin() + active_size, engine);
|
||||
|
||||
for (size_t s = 0; s < active_size; ++s) {
|
||||
const size_t i = index[s];
|
Loading…
Reference in New Issue
Block a user