+
+ /** Create a clone of this object on the heap. One can think of this as
+ * simulating a virtual copy constructor which is needed for instance by
+ * the refcounted construction of an ex from a basic. */
+ virtual basic * duplicate() const { return new basic(*this); }
+
+ // evaluation
+ virtual ex eval(int level = 0) const;
+ virtual ex evalf(int level = 0) const;
+ virtual ex evalm() const;
+protected:
+ virtual ex eval_ncmul(const exvector & v) const;
+public:
+ virtual ex eval_indexed(const basic & i) const;
+
+ // printing