Parenthesis around function call
<p>In the code snippet below, if I exclude the parenthesis around the second call to <code>std::istreambuf_iterator</code>, I get a compile error on the last line:</p>

<blockquote>
  <p>left of .c_str() must have a class/struct/union.</p>
</blockquote>

<pre><code>std::ifstream file("file.txt");;

std::string prog(
    std::istreambuf_iterator&lt;char&gt;(file),
    (std::istreambuf_iterator&lt;char&gt;()));
prog.c_str();
</code></pre>

<p>What do these parentheses actually do? It seems to me that they should be able to be excluded.</p>
