<div dir="ltr">i am having problems compiling the following code:<br>====================================<br><br>#if 1<br>template &lt;class T&gt; class c1 {};<br>template &lt;class T&gt; class c2 : public c1&lt;T&gt; { public: c2(T &amp;a); };<br>
#else<br>template &lt;class T&gt; class c1;<br>template &lt;class T&gt; class c2;<br>#endif<br><br>template &lt;&gt; class c1&lt;int&gt;<br>{<br>        int m_a;<br>        public:<br>        c1():m_a(0) {};<br>        c1(int a):m_a(a) {};<br>
        c1(int &amp;a):m_a(a) {};<br>        void set(const int a) {m_a=a;};<br>        const int get(void) const {return m_a;};<br>        c2&lt;int&gt; gen_c2(int a)<br>        {<br>                c2&lt;int&gt; ret(a);<br>
                return ret;<br>        }<br>        const c1&lt;int&gt; &amp;operator=(const c1&lt;int&gt; &amp;other) {set(other.get()); return *this;};<br>};<br><br>template &lt;&gt; class c2&lt;int&gt; : public c1&lt;int&gt;<br>
{<br>public:<br>        c2(int &amp;a):c1(a) {};<br>};<br><br>int main()<br>{<br>        c1&lt;int&gt; a;<br>        c2&lt;int&gt; b=a.gen_c2();<br>}<br>===========================================<br>if i compile it, i get:<br>
file.cpp:27: error: specialization of ‘c2&lt;int&gt;’ after instantiation<br><br>if on the other hand i change the #if 1 to #if 0, i get:<br>file.cpp: In member function ‘c2&lt;int&gt; c1&lt;int&gt;::gen_c2(int)’:<br>file.cpp:20: error: return type ‘struct c2&lt;int&gt;’ is incomplete<br>
<br><br></div>