summaryrefslogtreecommitdiff
path: root/integer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'integer.cpp')
-rw-r--r--integer.cpp18
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