Compilation error when calling function with default arguments
<p>I'm getting errors when I call a function which uses a default argument.</p>

<p>The two files are <a href="http://pastebin.com/5AUyHpGk" rel="nofollow">cache.cpp</a> and <a href="http://pastebin.com/LgdpwPSZ" rel="nofollow">cache.h</a></p>

<p>Command I use to compile is </p>

<pre><code>g++ -c cache.cpp
</code></pre>

<p>and the error is:</p>

<pre><code>cache.cpp: In member function ‘bool mem::read(long unsigned int)’:
cache.cpp:205:88: error: no matching function for call to ‘vcache::swap(long unsigned int&amp;, bool&amp;)’
cache.h:97:23: note: candidate is: long unsigned int vcache::swap(long unsigned int, bool, int)
cache.cpp: In member function ‘void mem::write(long unsigned int)’:
cache.cpp:367:92: error: no matching function for call to ‘vcache::swap(long unsigned int&amp;, bool&amp;)’
cache.h:97:23: note: candidate is: long unsigned int vcache::swap(long unsigned int, bool, int)
</code></pre>

<p>As you can see on line #569 where the function vcache::swap has been defined, I've provided a default value to the 3rd argument.
The problem arises when I don't specify the 3rd argument during the function call. If I run this by explicitly specifying a 3rd argument, it compiles properly.</p>

<p>Am unable to understand why this is happening.</p>
