ptrdiff_t mit size_t vergleichen
-
ich hab folgendes Problemchen: ich verwende einen Ausdruck vom Typ size_t und vergleiche ihn mit einem Ausdruck vom Typ ptrdiff_t, wonach der Compiler mir eine Warnung entgegenschleudert von wegen
comparison between signed and unsigned integer expressions. Wie krieg ich das weg? Der fragliche Code lautet:class X { public: std::size_t Size(); void f(); private: struct Impl; auto_ptr<Impl> pimpl; }; struct X::Impl { std::deque<TH1*> histos }; void X::f() { if (std::count(pimpl->histos.begin(), pimpl->histos.end(), static_cast<TH1*>(0)) >= Size()) /*...*/ }Stellt sich die Frage, warum std::count ueberhaupt eine signed integer expression zurueckgibt...
-
Naja notfalls einfach nach unsigned casten ...
es wird eintemplate <class InputIterator, class T> typename iterator_traits<InputIterator>::difference_type count ( ForwardIterator first, ForwardIterator last, const T& value );=>
std::iterator_traits<InputIterator>::difference_typevon std::count zurück gegeben, der Typ ist demnach Teil der struct std::iterator_traits und dann kommt es darauf an => http://www.sgi.com/tech/stl/iterator_traits.html