It's due to template inheritance. In such case you should mannualy specify using for base methods:
template <typename T>
MyDerived<T>::doSomething() {
using MyBase<T>::addStuff;
T* thingy = new T();
addStuff(thingy);
}
or do it by this pointer:
template <typename T>
MyDerived<T>::doSomething() {
T* thingy = new T();
this->addStuff(thingy);
}