// This is my object generator: template inline typename Iterator::Ptr makeMappingIterator(const typename MappingCallback::Ptr &mapper, const typename Iterator::Ptr &source, const typename DynamicContext::Ptr &context) { return typename Iterator::Ptr(new MappingIterator(mapper, source, context)); } // This is what should compile: Item::Iterator::Ptr Atomizer::evaluateSequence(const DynamicContext::Ptr &context) const { return makeMappingIterator(MappingCallback::Ptr(const_cast(this)), m_operand->evaluateSequence(context), context); } // This is the error message: /mnt/data/home/frans/kde/src/kdenonbeta/kdom/xpath/janitors/Atomizer.cpp: In member function 'virtual KDOM::PlainSharedPtr > > KXPATH::Atomizer::evaluateSequence(const KDOM::PlainSharedPtr&) const': /mnt/data/home/frans/kde/src/kdenonbeta/kdom/xpath/janitors/Atomizer.cpp:44: error: no matching function for call to 'makeMappingIterator(KDOM::PlainSharedPtr, KDOM::PlainSharedPtr > >, KDOM::PlainSharedPtr > >, const KDOM::PlainSharedPtr&)' Error creating ../../../kdom/xpath/janitors/Atomizer.lo. Exit status 1. makeobj[0]: Leaving directory `/mnt/data/home/frans/kde/src/kdenonbeta/kdom/xpath/janitors' // What's wrong? How do I fix it?