Hi, something must be wrong with my subclass, but I don't understand it. I subclassed symbol to get a non-commutative version: ---------- HEADER -------------- #include <ginac/symbol.h> namespace GiNaC { class ncsymbol: public symbol { public: ncsymbol(const symbol& s); explicit ncsymbol(const std::string & initname); ncsymbol(const std::string & initname, const std::string & texname); unsigned return_type() const { return return_types::noncommutative_composite; } }; GINAC_DECLARE_UNARCHIVER(ncsymbol); } ---------- IMPLEMENTATION ------------- #include <ginac/ginac.h> namespace GiNaC { // non-commutative symbol ncsymbol::ncsymbol() : symbol() { } ncsymbol::ncsymbol(const symbol& s) : symbol(s) { } ncsymbol::ncsymbol(const std::string & initname) : symbol(initname) { } ncsymbol::ncsymbol(const std::string & initname, const std::string & texname) : symbol(initname, texname) { } GINAC_BIND_UNARCHIVER(ncsymbol); -------------------------------------- But when I execute the following code the program crashes when printing x: symbol x("x"); x = ncsymbol("y"); std::cout << x << std::endl; It does not crash if I print ncsymbol("y") directly (without assigning it to x first). Can anybody explain why? Did I forget to implement an essential method? Thanks! Jan