mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 17:16:33 +08:00
Fix compilation with Android NDK
It seems ADL lookup is broken with the STLPort library. Peter says: The compiler is gcc 4.4.3, but I don't know how many patches they have applied to it. I think gcc has had support for Koenig lookup a long time. I think the problem is the type of the vector iterator. For example, line 272 in search.cpp: if (bookMove && count(RootMoves.begin(), RootMoves.end(), bookMove)) gives the error: jni/stockfish/search.cpp:272: error: 'count' was not declared in this scope Here RootMoves is: std::vector<RootMove> RootMoves; If std::vector<T>::iterator is implemented as T*, then Koenig lookup would fail because RootMove* is not in namespace std. I compile with the stlport implementation of STL, which in its vector class has: typedef value_type* iterator; I'm not sure if this is allowed by the C++ standard. I did not find anything that says the iterator type must belong to namespace std. The consensus in this thread http://compgroups.net/comp.lang.c++.moderated/argument-dependent-lookup/433395 is that the stlport iterator type is allowed. Report and patch by Peter Osterlund. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
/// | only in 64-bit mode. For compiling requires hardware with
|
||||
/// | popcnt support.
|
||||
|
||||
#include <cctype>
|
||||
#include <climits>
|
||||
#include <cstdlib>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user