statement.append("literal") was creating a symbol value, which was not
following the principle of least surprise.
template<>
struct TypeInfo<std::string, false>: StringType { };
template<>
struct TypeInfo<std::string, false>: StringType { };
+template<>
+struct TypeInfo<char *, false>: StringType { };
+
+template<>
+struct TypeInfo<const char *, false>: StringType { };
+
template<typename T>
struct TypeInfo<const T, false>: TypeInfo<T> { };
template<typename T>
struct TypeInfo<const T, false>: TypeInfo<T> { };