¿Por qué hay paréntesis adicional en la función de lectura de archivos?

Entiendo que el siguiente código (de aquí) se utiliza para leer el contenido de un archivo a cadena:

#include <fstream>
#include <string>

  std::ifstream ifs("myfile.txt");
  std::string content( (std::istreambuf_iterator<char>(ifs) ),
                       (std::istreambuf_iterator<char>()    ) );

Sin embargo, no entiendo por qué se requieren tales paréntesis aparentemente redundantes. Por ejemplo, el siguiente código no se compila:

#include <fstream>
#include <string>

  std::ifstream ifs("myfile.txt");
  std::string content(std::istreambuf_iterator<char>(ifs),
                      std::istreambuf_iterator<char>()    );

¿Por qué se necesitan tantos paréntesis para compilar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta