diff options
Diffstat (limited to 'integer.cpp')
-rw-r--r-- | integer.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/integer.cpp b/integer.cpp index dd667f9..f5b5fc4 100644 --- a/integer.cpp +++ b/integer.cpp @@ -2834,22 +2834,28 @@ Integer Integer::Power2(unsigned int e) return r; } +template <long i> +struct NewInteger +{ + Integer * operator()() const + { + return new Integer(i); + } +}; + const Integer &Integer::Zero() { - static const Integer zero; - return zero; + return Singleton<Integer>().Ref(); } const Integer &Integer::One() { - static const Integer one(1,2); - return one; + return Singleton<Integer, NewInteger<1> >().Ref(); } const Integer &Integer::Two() { - static const Integer two(2,2); - return two; + return Singleton<Integer, NewInteger<2> >().Ref(); } bool Integer::operator!() const |