<?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[Konstruktorproblem mit Template.]]></title><description><![CDATA[<p>Hallo,</p>
<p>was muss ich tun, damit dieser Code korrekt funktioniert?</p>
<pre><code class="language-cpp">template&lt;class Argument&gt; class A
{
public:
	class B
	{
	public:
		B()
		{
		}

		B(const B&amp;)
		{
		}

		template&lt;class OtherArgument&gt; B(const typename A&lt;OtherArgument&gt;::B&amp;)
		{
		}
	};
};

int main(void)
{
	A&lt;int&gt;::B b1;
	A&lt;int&gt;::B b2=b1;
	A&lt;bool&gt;::B b3=b2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/201949/konstruktorproblem-mit-template</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 06:55:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201949.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Jan 2008 23:44:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktorproblem mit Template. on Sat, 05 Jan 2008 23:44:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>was muss ich tun, damit dieser Code korrekt funktioniert?</p>
<pre><code class="language-cpp">template&lt;class Argument&gt; class A
{
public:
	class B
	{
	public:
		B()
		{
		}

		B(const B&amp;)
		{
		}

		template&lt;class OtherArgument&gt; B(const typename A&lt;OtherArgument&gt;::B&amp;)
		{
		}
	};
};

int main(void)
{
	A&lt;int&gt;::B b1;
	A&lt;int&gt;::B b2=b1;
	A&lt;bool&gt;::B b3=b2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1431538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1431538</guid><dc:creator><![CDATA[Kondi]]></dc:creator><pubDate>Sat, 05 Jan 2008 23:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktorproblem mit Template. on Sun, 06 Jan 2008 01:14:25 GMT]]></title><description><![CDATA[<p>A&lt;OtherArgument&gt;::B ist kein für OtherArgument deduzierbarer Konstrukt. Dieser Konstruktor kann niemals aufgerufen werden. Ein Konvertierungoperator wäre sicherlich eine Möglichkeit aber wohl keine gute Lösung. Dann verbleibt nur, das Argument allgemeiner zu fassen und im Nachhinein (ggf. in Kombination mit SFINAE) OtherArgument aus dem deduzierten Templateargument zu bestimmen (der Compiler kann OtherArgument nicht selbst bestimmen, aber wir können es berechen, da wir die innere Struktur von B kennen).</p>
<pre><code class="language-cpp">template&lt;class Argument&gt; class A
{
public:
    class B
    {
    public:
        typedef Argument A_Argument;
...
        template&lt;class T&gt; B(const T&amp;, typename enable_if&lt; is_same&lt; T, typename A&lt; typename T::A_Argument &gt;::B &gt;::type* = 0)
        {
        }
    };
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1431579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1431579</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 06 Jan 2008 01:14:25 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktorproblem mit Template. on Sun, 06 Jan 2008 01:59:41 GMT]]></title><description><![CDATA[<p>Jop, das ist es. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1431592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1431592</guid><dc:creator><![CDATA[Kondi]]></dc:creator><pubDate>Sun, 06 Jan 2008 01:59:41 GMT</pubDate></item></channel></rss>