]> www.ginac.de Git - ginac.git/blobdiff - ginac/registrar.h
Improve method of setting status_flags::dynallocated.
[ginac.git] / ginac / registrar.h
index 5e2b0e49fbd18e71d658b517e1fee26321533efe..f2f7e616ab772247934403a9e2e0ba9effaee657 100644 (file)
@@ -149,9 +149,14 @@ public: \
  *  registry (mainly needed for archiving). */
 #define GINAC_DECLARE_REGISTERED_CLASS(classname, supername) \
        GINAC_DECLARE_REGISTERED_CLASS_NO_CTORS(classname, supername) \
+       template<class B, typename... Args> friend B & dynallocate(Args &&... args); \
 public: \
        classname(); \
-       classname * duplicate() const override { return new classname(*this); } \
+       classname * duplicate() const override { \
+               classname * bp = new classname(*this); \
+               bp->setflag(status_flags::dynallocated); \
+               return bp; \
+       } \
        \
        void accept(GiNaC::visitor & v) const override \
        { \