Typename lookup of return parameter
<p>I was recently asked by a student about a compile issue. The answer was quite simple but right now I am struggling about the reason.
A simple example:</p>

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

struct MyStruct
{
    typedef std::vector&lt;int&gt; MyIntVector;

    MyIntVector CopyVector(MyIntVector const&amp; vector);
};


MyStruct::MyIntVector MyStruct::CopyVector(MyIntVector const&amp; vector)
^^^^^^^^
{
    MyIntVector vec;
    return vec;
}

int main(int /*argc*/, char** /*argv*/)
{
    MyStruct st;
}
</code></pre>

<p>To be valid c++ code the return parameter has to be fully qualified. So much to the answer and to make the compiler/student happy.  </p>

<p>But why has the return value to be qualified with the class and the parameter to the function not?  </p>

<p>I always did this and I know that it has to do with the ADL lookup, but now that I was asked I searching for a better answer.<br>
Can anyone give a me reference to the spec or a hint where I can find some more information?</p>
