<?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[Von Templates und Spezialisierungen]]></title><description><![CDATA[<p>Guten Tag, ich hab hier ein kleines Problem mit Template-Spezialisierungen. Könnte ihr da wohl bitte mal einen Blick drauf werfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">namespace order {
	struct row_major {};
	struct column_major {};
}

namespace detail {
    template&lt; template&lt; typename ContainerType, typename OrderType &gt; class    ArrayType, typename ContainerType, typename OrderType &gt;
	class array2d_types {
	public:
            typedef std::size_t size_type;
        };

    template&lt; template&lt;typename,typename&gt; class ArrayType, typename ContainerType, typename OrderType &gt;
	class array2d_base;

    template&lt; template&lt;typename,typename&gt; class ArrayType, typename ContainerType &gt;
	class array2d_base&lt; ArrayType, ContainerType, order::column_major &gt; 
		: public detail::array2d_types&lt; ArrayType, ContainerType, order::column_major &gt;
	{};

}

template&lt; typename ContainerType, typename Ordering = order::column_major &gt;
class array2d : public detail::array2d_base&lt; array2d, ContainerType, Ordering &gt; {
public:
   typedef size_type bla; // size_type undefiniert, es wird nicht die Spezialisierung von array2d_base getroffen :(
};
</code></pre>
<p>Und vor allem meckert der Compiler da schon, obwohl überhaupt keine Template-Instanziierung von array2d existiert. Was verpeile ich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311559/von-templates-und-spezialisierungen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 14:16:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311559.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Dec 2012 14:55:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Von Templates und Spezialisierungen on Sat, 08 Dec 2012 14:55:54 GMT]]></title><description><![CDATA[<p>Guten Tag, ich hab hier ein kleines Problem mit Template-Spezialisierungen. Könnte ihr da wohl bitte mal einen Blick drauf werfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">namespace order {
	struct row_major {};
	struct column_major {};
}

namespace detail {
    template&lt; template&lt; typename ContainerType, typename OrderType &gt; class    ArrayType, typename ContainerType, typename OrderType &gt;
	class array2d_types {
	public:
            typedef std::size_t size_type;
        };

    template&lt; template&lt;typename,typename&gt; class ArrayType, typename ContainerType, typename OrderType &gt;
	class array2d_base;

    template&lt; template&lt;typename,typename&gt; class ArrayType, typename ContainerType &gt;
	class array2d_base&lt; ArrayType, ContainerType, order::column_major &gt; 
		: public detail::array2d_types&lt; ArrayType, ContainerType, order::column_major &gt;
	{};

}

template&lt; typename ContainerType, typename Ordering = order::column_major &gt;
class array2d : public detail::array2d_base&lt; array2d, ContainerType, Ordering &gt; {
public:
   typedef size_type bla; // size_type undefiniert, es wird nicht die Spezialisierung von array2d_base getroffen :(
};
</code></pre>
<p>Und vor allem meckert der Compiler da schon, obwohl überhaupt keine Template-Instanziierung von array2d existiert. Was verpeile ich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2278462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2278462</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 08 Dec 2012 14:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Von Templates und Spezialisierungen on Sat, 08 Dec 2012 15:10:31 GMT]]></title><description><![CDATA[<p>Mach aus Zeile 28</p>
<pre><code>typedef typename detail::array2d_base&lt; array2d, ContainerType, Ordering &gt;::size_type bla;
</code></pre>
<p>, dann dürfte es gehen.<br />
Edit: Oder setz' vor Zeile 28 ein</p>
<pre><code>using typename detail::array2d_base&lt; array2d, ContainerType, Ordering &gt;::size_type;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2278464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2278464</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 08 Dec 2012 15:10:31 GMT</pubDate></item><item><title><![CDATA[Reply to Von Templates und Spezialisierungen on Sat, 08 Dec 2012 15:16:24 GMT]]></title><description><![CDATA[<p>Aber dann muss ich ja alle Typen aus array2d_types (das sind ungestript wesentlich mehr) manuell nach array2d &quot;importieren&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2278468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2278468</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 08 Dec 2012 15:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Von Templates und Spezialisierungen on Sat, 08 Dec 2012 15:21:30 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Aber dann muss ich ja alle Typen aus array2d_types (das sind ungestript wesentlich mehr) manuell nach array2d &quot;importieren&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Ja, dann wird halt das Typedef ein wenig länger, da hast du Glück gehabt.<br />
Welcome to the wunderful world of C++-templates.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2278471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2278471</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 08 Dec 2012 15:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Von Templates und Spezialisierungen on Sat, 08 Dec 2012 15:31:11 GMT]]></title><description><![CDATA[<p>Ich leite jetzt einfach array2d auch nochmal von den array2d_types ab, ist ja eh eine leere Klasse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aber jetzt habe ich folgendes Problem:</p>
<pre><code class="language-cpp">template&lt; typename ContainerType, typename Ordering = order::column_major &gt;
class array2d : public detail::array2d_base&lt; array2d, ContainerType, Ordering &gt;, public detail::array2d_types&lt; array2d, ContainerType, Ordering &gt; {
private:
	typedef detail::array2d_base&lt; array2d, ContainerType, Ordering &gt; base;
}
</code></pre>
<p>Das klappt so nicht, weil der name array2d innerhalb des Templates ja für den konkreten Typ steht, komme ich dort irgendwie an das unkonkrete Template heran?</p>
<p>Edit: hat sich erledigt! ( namespace::array2d verwenden! ) <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="🙂"
    /> Ist ja auch irgendwie logisch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2278473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2278473</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 08 Dec 2012 15:31:11 GMT</pubDate></item></channel></rss>