+symbol::symbol(const std::string & initname, const std::string & texname, unsigned domain) :
+ serial(next_serial++), name(initname), TeX_name(texname), domain(domain),
+ ret_type(return_types::commutative), ret_type_tinfo(make_return_type_t<symbol>())
+{
+ setflag(status_flags::evaluated | status_flags::expanded);
+}
+
+symbol::symbol(const std::string & initname, const std::string & texname,
+ unsigned rt, const return_type_t& rtt, unsigned domain) :
+ serial(next_serial++), name(initname), TeX_name(texname),
+ domain(domain), ret_type(rt), ret_type_tinfo(rtt)
+{
+ setflag(status_flags::evaluated | status_flags::expanded);
+}
+
+// realsymbol
+
+realsymbol::realsymbol(const std::string & initname, unsigned domain)
+ : symbol(initname, domain) { }
+
+realsymbol::realsymbol(const std::string & initname, const std::string & texname, unsigned domain)
+ : symbol(initname, texname, domain) { }
+
+realsymbol::realsymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain)
+ : symbol(initname, rt, rtt, domain) { }
+
+realsymbol::realsymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain)
+ : symbol(initname, texname, rt, rtt, domain) { }
+
+// possymbol
+
+possymbol::possymbol(const std::string & initname, unsigned domain)
+ : symbol(initname, domain) { }
+
+possymbol::possymbol(const std::string & initname, const std::string & texname, unsigned domain)
+ : symbol(initname, texname, domain) { }
+
+possymbol::possymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain)
+ : symbol(initname, rt, rtt, domain) { }
+
+possymbol::possymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain)
+ : symbol(initname, texname, rt, rtt, domain) { }