<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: template class inheritance</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9453.html</link>
    <description>Здравствуйте!&lt;br&gt;OS Fedora 12&lt;br&gt;gcc version 4.7.0 20120209 (experimental) (GCC)&lt;br&gt;&lt;br&gt;Предположим, у нас имеется тривиальное наследование:&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;template &amp;lt;class T&amp;gt;&lt;br&gt;class Base&lt;br&gt;&#123;&lt;br&gt; public:&lt;br&gt;  int count;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;template &amp;lt;class T&amp;gt;&lt;br&gt;class Derived : Base&amp;lt;T&amp;gt;&lt;br&gt;&#123;&lt;br&gt; public:&lt;br&gt;  int f() &#123; return count; &#125;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Компилятор выдает ошибку что переменная count не объявлена и нам необходимо явно указать Base&amp;lt;T&amp;gt;::count.&lt;br&gt;Этот код взят из проекта 2005 года и я подумал: возможно, современные компиляторы и стандарт С++11, в частности, не поддерживают шаблонного наследования в неявном виде, как в приведенном мною примере, в то время, как старые компиляторы нормально компилировали такой код.&lt;br&gt;Это проблема новых стандартов или шаблонного наследования вообще?&lt;br&gt;Спасибо.&lt;br&gt;Алексей&lt;br&gt;</description>

<item>
    <title>template class inheritance (JohnProfic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9453.html#1</link>
    <pubDate>Tue, 08 May 2012 13:38:12 GMT</pubDate>
    <description>&amp;gt; Компилятор выдает ошибку что переменная count не объявлена и нам необходимо явно &lt;br&gt;&amp;gt; указать Base&amp;lt;T&amp;gt;::count.&lt;br&gt;&lt;br&gt;Или this-&amp;gt;count.&lt;br&gt;&amp;gt; Этот код взят из проекта 2005 года и я подумал: возможно, современные &lt;br&gt;&amp;gt; компиляторы и стандарт С++11, в частности, не поддерживают шаблонного наследования в &lt;br&gt;&amp;gt; неявном виде, как в приведенном мною примере, в то время, как &lt;br&gt;&amp;gt; старые компиляторы нормально компилировали такой код.&lt;br&gt;&amp;gt; Это проблема новых стандартов или шаблонного наследования вообще?&lt;br&gt;&lt;br&gt;Это проблемы шаблонного наследования и несоблюдения старыми компиляторами старых же стандартов. Я не помню как называется это поведение в стандарте, но суть сводится к тому, что f() не зависит от T, поэтому поиск в базовом классе (зависящем от T) не производится. В то время как любое из двух вышеуказанных выражений уже зависит от T, поэтому с ними проблем нет. Хм, ЕМНИП есть еще третий способ: указать &quot;using Base&amp;lt;T&amp;gt;::count;&quot; либо в наследованном классе, либо в самой функции.&lt;br&gt;</description>
</item>

</channel>
</rss>
