Error: undefined reference to operator+(Stack<int> const&, Stack<int> const&)'
<p>I know that if I dont define copy Constructor or Constructor, c++ define it auto<br>
and i know Shallow &amp; deep copy<br>
but in below code i have a bug that it seem about copy constructor   </p>

<pre><code>#include&lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

template&lt;class T&gt;
class Stack
{
    private:
        vector&lt;T&gt; stack;

    public:
    vector&lt;T&gt; returnStack()
    {
        return stack;
    }

        vector&lt;T&gt; returnStack() const
    {
            return stack;
    }

    void Push(T item)
    {
        stack.insert(stack.begin()+stack.size(),item);
    }

    friend Stack operator+(const Stack &amp;one,const Stack &amp;other);
};

template&lt;class T&gt;
Stack&lt;T&gt;  operator+(const Stack&lt;T&gt; &amp;one,const Stack&lt;T&gt; &amp;other)
{
    Stack&lt;T&gt; newStack;
    for (typename vector&lt;T&gt;::size_type i = 0; i &lt; one.returnStack().size(); i++)
    {
        newStack.Push(one.returnStack()[i]);
    }
    for (typename vector&lt;T&gt;::size_type i = 0; i &lt; other.returnStack().size(); i++)
    {
        newStack.Push(other.returnStack()[i]);
    }
    return newStack;
}

int main()
{
    Stack &lt;int &gt; a;
    Stack &lt;int &gt; b;
    a.Push(1);
    a.Push(2);
    b.Push(3);
    b.Push(4);
    Stack &lt;int&gt; c=a+b ;//have a bug
    return 0;
}
</code></pre>

<p>above code realese below error<br>
<code>undefined reference to operator+(Stack&lt;int&gt; const&amp;, Stack&lt;int&gt; const&amp;)'</code></p>

<p>I spend very time to debug its but i tired .can you help me ?   </p>
