Por que são parênteses extras na função de leitura de arquivos?

Eu entendo que o seguinte código (daqui) é usado para ler o conteúdo de um arquivo para string:

#include <fstream>
#include <string>

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

No entanto, não entendo por que esses parênteses aparentemente redundantes são necessários. Por exemplo, o código a seguir não compila:

#include <fstream>
#include <string>

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

Por que tantos parênteses são necessários para isso compilar?

questionAnswers(1)

yourAnswerToTheQuestion