Various ways to convert types to string expressions. If you implement one (and only one) of the ways to convert your type to a string expression, then you can use your type directly in concatenation operations with string expressions and how arguments in the e_concat and e_subst functions.
convert_to_strexpr template specialization. convert_to_strexpr template for your type and create a static convert function in it that takes your object and returns a string expression, a simstr string object, or std::basic_string. template<typename K> auto to_strexpr()const function in your type that returns a string expression or string object.