34 #include <boost/lexical_cast.hpp>
35 #include <boost/functional/hash.hpp>
37 #include <boost/serialization/serialization.hpp>
38 #include <boost/serialization/array.hpp>
49 friend std::ostream& operator<<(std::ostream& os, ZqCharge<Q> c)
78 unsigned int get() {
return c_; }
80 template<
class Archive>
void save(Archive & ar)
const { ar[
"c"] <<
c_; }
81 template<
class Archive>
void load(Archive & ar) { ar[
"c"] >>
c_; }
83 template <
class Archive>
84 void serialize(Archive & ar,
const unsigned int version)
103 static const int q = Q;
110 template<
int R>
static charge fuse(
const boost::array<charge, R> &v)
113 for (
int i = 1; i < R; i++)
114 ret =
fuse(ret, v[i]);
friend ZqCharge< Q > operator+(ZqCharge< Q > a, ZqCharge< Q > b)
static charge fuse(charge a, charge b)
bool operator==(ZqCharge< Q > b) const
bool operator!=(ZqCharge< Q > b) const
static const charge IdentityCharge
ZqCharge(unsigned int c=0)
ZqCharge operator-() const
void serialize(Archive &ar, const unsigned int version)
static charge fuse(const boost::array< charge, R > &v)
void save(Archive &ar) const
friend bool operator>(ZqCharge< Q > a, ZqCharge< Q > b)