<?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[Forward-Declaring verschacheltes Template]]></title><description><![CDATA[<p>Hi,</p>
<p>Ja, Frage steht im Titel, wie geht das?</p>
<p>Ich habe bereits herausgefunden, dass man gerne eine Extraheader mit Forwards für alle Templates anlegt. Aber ich bin über die Syntax unsicher.</p>
<pre><code class="language-cpp">// A.h
// Header mit Template-Definition
template&lt;typename AImpl&gt; class A {};

template&lt;bool x&gt; class B {};

typedef A&lt;B&lt;true&gt;&gt; A1;
typedef A&lt;B&lt;false&gt;&gt; A2;
</code></pre>
<pre><code class="language-cpp">// someFunc.h
// Hier in einem anderen Header will ich A1 nutzen, aber erst in der .cpp
// die Implementierung bekannt machen
#include &quot;Forwards.h&quot;

void someFunc(const A1&amp; a1);
</code></pre>
<pre><code class="language-cpp">// Forwards.h:
template&lt;typename&gt; class A;
template&lt;bool&gt; class B;

typedef A&lt;B&lt;true&gt;&gt; A1;
typedef A&lt;B&lt;false&gt;&gt; A2;
</code></pre>
<pre><code class="language-cpp">// someFunc.cpp
#include &quot;someFunc.h&quot;
#include &quot;A.h&quot;

void someFunc(const A1&amp; a1) // jetzt darf A gern definiert sein
{
    // impl
}
</code></pre>
<p>Ist das in Forwards.h okay und so üblich? Oder wie macht man das? (soll unter MSVC10 laufen, aber wenn es mit C++11 und using besser geht, würde mich das als Bonusinfo auch interessieren)</p>
<p>Danke im Voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319654/forward-declaring-verschacheltes-template</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 03:40:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319654.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Aug 2013 16:28:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Forward-Declaring verschacheltes Template on Tue, 27 Aug 2013 19:18:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ja, Frage steht im Titel, wie geht das?</p>
<p>Ich habe bereits herausgefunden, dass man gerne eine Extraheader mit Forwards für alle Templates anlegt. Aber ich bin über die Syntax unsicher.</p>
<pre><code class="language-cpp">// A.h
// Header mit Template-Definition
template&lt;typename AImpl&gt; class A {};

template&lt;bool x&gt; class B {};

typedef A&lt;B&lt;true&gt;&gt; A1;
typedef A&lt;B&lt;false&gt;&gt; A2;
</code></pre>
<pre><code class="language-cpp">// someFunc.h
// Hier in einem anderen Header will ich A1 nutzen, aber erst in der .cpp
// die Implementierung bekannt machen
#include &quot;Forwards.h&quot;

void someFunc(const A1&amp; a1);
</code></pre>
<pre><code class="language-cpp">// Forwards.h:
template&lt;typename&gt; class A;
template&lt;bool&gt; class B;

typedef A&lt;B&lt;true&gt;&gt; A1;
typedef A&lt;B&lt;false&gt;&gt; A2;
</code></pre>
<pre><code class="language-cpp">// someFunc.cpp
#include &quot;someFunc.h&quot;
#include &quot;A.h&quot;

void someFunc(const A1&amp; a1) // jetzt darf A gern definiert sein
{
    // impl
}
</code></pre>
<p>Ist das in Forwards.h okay und so üblich? Oder wie macht man das? (soll unter MSVC10 laufen, aber wenn es mit C++11 und using besser geht, würde mich das als Bonusinfo auch interessieren)</p>
<p>Danke im Voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2348840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2348840</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 27 Aug 2013 19:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Declaring verschacheltes Template on Wed, 28 Aug 2013 08:21:13 GMT]]></title><description><![CDATA[<p>Ich würde mich da nach &lt;iosfwd&gt; orientieren. So sparst du dir die doppelten typedefs.</p>
<pre><code>// eisfwd.h:
template&lt;typename&gt; class A;
template&lt;bool&gt; class B;

typedef A&lt;B&lt;true&gt;&gt; A1;
typedef A&lt;B&lt;false&gt;&gt; A2;
</code></pre>
<pre><code>// eisimpl.hpp
template&lt;typename AImpl&gt; class A {}; 
template&lt;bool x&gt; class B {};
</code></pre>
<pre><code>// eis.h
#include &quot;eisfwd.h&quot;
#include &quot;eisimpl.hpp&quot;
</code></pre>
<pre><code>// someFunc.h
#include &quot;eisfwd.h&quot;

void someFunc(const A1&amp; a1);
</code></pre>
<pre><code>// someFunc.cpp
#include &quot;someFunc.h&quot;
#include &quot;eis.h&quot;

void someFunc(const A1&amp; a1) // jetzt darf A gern definiert sein
{
    // impl
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2348950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2348950</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Aug 2013 08:21:13 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Declaring verschacheltes Template on Wed, 28 Aug 2013 09:49:36 GMT]]></title><description><![CDATA[<p>Ah okay, also ein Header mehr zugunsten weniger typedefs. Gefällt mir, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2348958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2348958</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 28 Aug 2013 09:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Declaring verschacheltes Template on Wed, 28 Aug 2013 15:17:56 GMT]]></title><description><![CDATA[<p><code>eisimpl.hpp</code> braucht man nicht, man kann den Inhalt genau so gut gleich nach <code>eis.h</code> mit reinziehen.</p>
<p>Bzw. von Eisflammes Version ausgehend...<br />
Lösch die <code>typedef</code> s aus <code>A.h</code> raus und mach statt dessen in <code>A.h</code> ein <code>#include &quot;Forwards.h&quot;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349044</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Aug 2013 15:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Declaring verschacheltes Template on Wed, 28 Aug 2013 15:27:50 GMT]]></title><description><![CDATA[<p>Stimmt! Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349049</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 28 Aug 2013 15:27:50 GMT</pubDate></item></channel></rss>