<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[gelöst] komisches problem mit der typbestimmung bei template funktion]]></title><description><![CDATA[<p>atm benutze ich folgenden code</p>
<pre><code class="language-cpp">#pragma once
#include &lt;list&gt;
#include &lt;algorithm&gt;
#include &lt;tr1/functional&gt;
#include &lt;iterator&gt;
#include &lt;boost/type_traits/remove_pointer.hpp&gt;

using std::tr1::bind;
using namespace std::tr1::placeholders;

template &lt;class T&gt;
struct h
{
	typedef std::list&lt;T&gt; li;
	typedef typename std::list&lt;T&gt;::iterator it;
};

template &lt;class T&gt;
T findItem(typename h&lt;T&gt;::li &amp;l, int number) {
	typename h&lt;T&gt;::it iter = find_if(
			l.begin(), l.end(),
			bind(std::equal_to&lt;int&gt;(),
                bind(&amp;boost::remove_pointer&lt;T&gt;::type::getNumber,_1),
                number));
	if(iter != l.end())
		return *iter;
	else
		return 0;
}
</code></pre>
<p>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,</p>
<p>bekomme ich haufenweise diesen fehler:</p>
<pre><code>Fehler: keine passende Funktion für Aufruf von »findItem(std::list&lt;Exam*, std::allocator&lt;Exam*&gt; &gt;&amp;, int&amp;)
</code></pre>
<p>was mich verwirrt, da aus meiner sicht nix den int&amp; impliziert</p>
<p>*edit*<br />
lösung<br />
ich verwende jetzt einfach die tr1/type_traits</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187306/gelöst-komisches-problem-mit-der-typbestimmung-bei-template-funktion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 15:10:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187306.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2007 10:44:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] komisches problem mit der typbestimmung bei template funktion on Wed, 18 Jul 2007 11:01:12 GMT]]></title><description><![CDATA[<p>atm benutze ich folgenden code</p>
<pre><code class="language-cpp">#pragma once
#include &lt;list&gt;
#include &lt;algorithm&gt;
#include &lt;tr1/functional&gt;
#include &lt;iterator&gt;
#include &lt;boost/type_traits/remove_pointer.hpp&gt;

using std::tr1::bind;
using namespace std::tr1::placeholders;

template &lt;class T&gt;
struct h
{
	typedef std::list&lt;T&gt; li;
	typedef typename std::list&lt;T&gt;::iterator it;
};

template &lt;class T&gt;
T findItem(typename h&lt;T&gt;::li &amp;l, int number) {
	typename h&lt;T&gt;::it iter = find_if(
			l.begin(), l.end(),
			bind(std::equal_to&lt;int&gt;(),
                bind(&amp;boost::remove_pointer&lt;T&gt;::type::getNumber,_1),
                number));
	if(iter != l.end())
		return *iter;
	else
		return 0;
}
</code></pre>
<p>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,</p>
<p>bekomme ich haufenweise diesen fehler:</p>
<pre><code>Fehler: keine passende Funktion für Aufruf von »findItem(std::list&lt;Exam*, std::allocator&lt;Exam*&gt; &gt;&amp;, int&amp;)
</code></pre>
<p>was mich verwirrt, da aus meiner sicht nix den int&amp; impliziert</p>
<p>*edit*<br />
lösung<br />
ich verwende jetzt einfach die tr1/type_traits</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327682</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:01:12 GMT</pubDate></item></channel></rss>