Currently I have:
template <typename T> struct typename_struct<T*> {
static char const* name() {
return (std::string(typename_struct<T>::name()) + "*").c_str();
}
};
I wonder if I can avoid the whole bit where I'm forced to allocate a string to perform the concatenation.
This is all happening at compile time, i.e. I intend to get the string "int****"
when I reference typename_struct<int****>::name()
. (Do assume that I have declared a corresponding specialization for int
which returns "int"
)
As the code is written now, does the compiler do the concatenation with std::string during compile time only? (I would be okay with that) Or does such a call result in 4 std::string based concatenations at runtime? (I would not be okay with that)
char const*
is just not practical – Katistd::string
uses dynamic memory so I can think of no reason for doing this at compile type, especially not for performance. – Unteachstd::string
– Kati