Le doublon peut être créé mais ça ne se voit pas dans ce petit bout de code.
J'essaie de coder un match3 comme Candy Crush, et res devra contenir tous les jetons alignés. Seulement il peut arriver qu'un jeton soit aligné à la fois verticalement et horizontalement et je dois récupérer 5 jetons alignés et non 6 pour pas fausser mes calculs sur le score.
Juste en dessous avec le code, je fais la même chose avec test_horizontal.
Donc, merci pour le prédicat.
Par contre, il me pose d'autres soucis :
This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
A cet endroit là dans Config.hpp, ligne 186 :
#if defined(_MSC_VER)
typedef signed __int64 Int64;
typedef unsigned __int64 Uint64;
#else
typedef signed long long Int64; //ici
typedef unsigned long long Uint64; //et la
#endif
Il m'indique aussi que logiquement, le prédicat ne peut ni renvoyer a ou b qui sont des Vector2i, alors que l'opérateur doit renvoyer un booléen. Si je traffique un peu le prédicat pour renvoyer un booléen; il ne me reste plus que le problème de l'iso 2011.
Mais quand j'active -stc=c++11 ; j'ai une erreur dans math.h, ligne 635 carrément :
c:\mingw\include\math.h|635|error: '_hypot' was not declared in this scope|
/* 7.12.7.3 */
extern double __cdecl hypot (double, double); /* in libmoldname.a */
extern float __cdecl hypotf (float, float);
#ifndef __NO_INLINE__
__CRT_INLINE float __cdecl hypotf (float x, float y)
{ return (float)(_hypot (x, y)); } //ici
#endif
extern long double __cdecl hypotl (long double, long double);