@Andy314
In "normal" subclassing without templates there is a simple lookup -mechanism to find identifier in a funktion of the derived class: Search in the base class , if not found search in the global namespace.
In "normal subclassing" the class is known, while with templates the class is generated by the compiler when instantiation is performed. If you don't make a specialization of the template, no code will be ever generated for the template. So when reading the template the compiler is "confused" how to deduce which count() exactly you mean. Granted, most of the time it's the base class/derived class' implementation, but this gets really complicated really fast when the overloading rules should be applied. That's why it's whining (mostly harmlessly) that you "should" specify which function exactly you mean (as required by the C++ standard).
This blows up my code at thousands of lines very much and I dont like it. To avaid this error for memberfunctions I can integrate a compiler switch -fpermissive but I get the warnings for it.
Templates are pretty verbose, I sympathize, but switching off compiler warnings/errors is not a good solution. As I mentioned, -fpermissive includes very many warnings/errors, most of which are quite important and you'd get much more headaches by switching it off, than by explicitly specifying which functions you want called. If you still insist on using the flag, you can set it in the project file through the QMAKE_CXXFLAGS variable:
QMAKE_CXXFLAGS += -fpermissive
Kind regards.