[gelöst] komisches problem mit der typbestimmung bei template funktion
-
atm benutze ich folgenden code
#pragma once #include <list> #include <algorithm> #include <tr1/functional> #include <iterator> #include <boost/type_traits/remove_pointer.hpp> using std::tr1::bind; using namespace std::tr1::placeholders; template <class T> struct h { typedef std::list<T> li; typedef typename std::list<T>::iterator it; }; template <class T> T findItem(typename h<T>::li &l, int number) { typename h<T>::it iter = find_if( l.begin(), l.end(), bind(std::equal_to<int>(), bind(&boost::remove_pointer<T>::type::getNumber,_1), number)); if(iter != l.end()) return *iter; else return 0; }wenn ich jedoch das remove_pointer loswerden will, und versuche, den pointer an verschiedenen stellen anzusetzen indem ich es entweder mit pointer in der hilfsklasse definiere, oder die hilfsklasse mit T* instanziere,
bekomme ich haufenweise diesen fehler:
Fehler: keine passende Funktion für Aufruf von »findItem(std::list<Exam*, std::allocator<Exam*> >&, int&)was mich verwirrt, da aus meiner sicht nix den int& impliziert
*edit*
lösung
ich verwende jetzt einfach die tr1/type_traits