Haha the error is nice:
Code:
template<typename T> CTmplStringBase<T>::CTmplStringBase(const T* strData)
{
*this = strData;
}
But the operator= is not defined yet! That you do lateron. So don't use '*this = strData' , but copy data members one-by-one. Then it works on my machine!
Further, I really really think you should not derive from your structs, because
1) it does not satisfy at all the Liskov substitution principle (just learned, but very useful)
2) it isn't a trait, and if it was so, traits are always template parameters.
You'd better have a composition: make a private/protected object of it in your string class.
http://www.ubookcase.com/book/Addiso...3586/ch34.html
it is really worth looking at this chapter.
Please find attached what I have made (very simplified) from your code.