Почему лишние скобки в функции чтения файлов?

Я так понимаю, что следующий код (отсюда) используется для чтения содержимого файла в строку:

#include 
#include 

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

Тем не менее, я неНе понятно, почему такие, казалось бы, лишние скобки требуются. Например, следующий код не компилируется:

#include 
#include 

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

Почему для компиляции нужно так много скобок?

Ответы на вопрос(1)

Ваш ответ на вопрос