Function takes a reference parameter with a default value
<p>Based on 
<a href="http://www.cplusplus.com/reference/stl/vector/vector/" rel="nofollow">http://www.cplusplus.com/reference/stl/vector/vector/</a></p>

<pre><code>explicit vector ( const Allocator&amp; = Allocator() );
</code></pre>

<p>This vector constructor takes a reference parameter which has default value of Allocator(). What I learn from this function signature is that a function can take a reference parameter with default value.</p>

<p>This the demo code I play with VS2010.</p>

<pre><code>#include "stdafx.h"
#include &lt;iostream&gt;

using namespace std;

void funA(const int&amp; iValue=5) // reference to a template const int 5 why?
{
    cout &lt;&lt; iValue &lt;&lt; endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
    funA();
    funA(10);
    return 0;
}
</code></pre>

<p>are there some rules to guide this syntax usage (i.e. a reference parameter with a default value)?</p>
