Conflit STD :: Set et NTL :: Vec_ZZ
Question
J'essaie d'utiliser STD :: Ensemble pour des vecteurs entier de longueur arbitraire définis par la Bibliothèque NTL et pour une raison quelconque, cela ne fonctionne pas.Il fonctionne totalement bien avec les entiers zz définis par la bibliothèque:
#include <NTL/ZZ.h>
#include <NTL/vec_ZZ.h>
#include <set>
NTL_CLIENT
int main(void){
std::set<ZZ> foo;
foo.insert(to_ZZ(1)); //works without problems
std::set<vec_ZZ> vectorFoo;
vec_ZZ vec;
vectorFoo.insert(vec); //causes compiler to crash
return 0;
}
Est-ce que quelqu'un sait pourquoi la première insertion fonctionne et le second n'est pas?
La solution
std::set<T>
is ordered by std::less<T>
, which defaults to bool operator<(T,T)
. ZZ
does define a proper operator<
(they're ordered) but vec_ZZ
doesn't. In fact, most NTL classes don't, not even ZZ_p
. Therefore std::set<ZZ_p>
is equally invalid.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow