<?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[Wie extern template richtig nutzen?]]></title><description><![CDATA[<p>Ich spiele gerade mit <code>extern template</code> herum. Folgendes Beispiel erzeugt bei mir eine Fehler in der IDE, nicht aber beim Kompilieren:</p>
<pre><code>// test.h
template&lt;class T&gt; struct foo {
	T bar;
};

extern template struct foo&lt;int&gt;;
</code></pre>
<pre><code>#include &quot;test.h&quot;

template struct foo&lt;int&gt;;

int main()
{
	foo&lt;int&gt; baz;
	baz.bar = 42;
    return 0;
}
</code></pre>
<p>Visual C++ 2017 meint in der IDE zu test.h <code>'extern template' cannot follow explicit instantiation of class &quot;foo&lt;int&gt;&quot;</code> , frisst den Code aber ohne eigentliche Compiler Warnung.</p>
<p>Mache ich grundsätzlich etwas falsch oder ist das einfach eine Macke?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/342603/wie-extern-template-richtig-nutzen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 20:09:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/342603.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Apr 2017 11:33:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie extern template richtig nutzen? on Sun, 23 Apr 2017 11:33:21 GMT]]></title><description><![CDATA[<p>Ich spiele gerade mit <code>extern template</code> herum. Folgendes Beispiel erzeugt bei mir eine Fehler in der IDE, nicht aber beim Kompilieren:</p>
<pre><code>// test.h
template&lt;class T&gt; struct foo {
	T bar;
};

extern template struct foo&lt;int&gt;;
</code></pre>
<pre><code>#include &quot;test.h&quot;

template struct foo&lt;int&gt;;

int main()
{
	foo&lt;int&gt; baz;
	baz.bar = 42;
    return 0;
}
</code></pre>
<p>Visual C++ 2017 meint in der IDE zu test.h <code>'extern template' cannot follow explicit instantiation of class &quot;foo&lt;int&gt;&quot;</code> , frisst den Code aber ohne eigentliche Compiler Warnung.</p>
<p>Mache ich grundsätzlich etwas falsch oder ist das einfach eine Macke?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2528550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2528550</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Sun, 23 Apr 2017 11:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie extern template richtig nutzen? on Sun, 23 Apr 2017 14:48:39 GMT]]></title><description><![CDATA[<p>extern soll die Instanziierung in einer Datei bzw sehr vielen Dateien verhindern. Folgende Dateien compilieren und linken geht:</p>
<pre><code>// test.h
template&lt;class T&gt; struct foo {
    T bar;
};
</code></pre>
<pre><code>// test.cpp
#include &quot;test.h&quot;

extern template struct foo&lt;int&gt;;	// hier nicht inst.

int main()
{
    foo&lt;int&gt; baz;
    baz.bar = 42;
    return 0;
}
</code></pre>
<pre><code>// instanz.cpp
#include &quot;test.h&quot;
template struct foo&lt;int&gt;;
</code></pre>
<p>Dateien wie test.cpp könnte es viele geben. Die Instanziierung läüft nur einmal. Meinst Du es so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2528560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2528560</guid><dc:creator><![CDATA[extern aber richtig]]></dc:creator><pubDate>Sun, 23 Apr 2017 14:48:39 GMT</pubDate></item></channel></rss>