 You see a way to implement concat, that doesn't require the forward declaration of the _impl_helper namespace (I'd like to keep it stashed away at the end of the file, not in front of the actual class) You think that it is a problem, that the internal representation of the string is not zero-terminated. In my current project, there are very few 0rd party functions that require zero terminated strings (and I try to avoid them myself where ever possible - hence this class), 