Dlaczego dodatkowe nawiasy w funkcji odczytu plików?

Rozumiem, że poniższy kod (stąd) służy do odczytu zawartości pliku do ciągu:

#include <fstream>
#include <string>

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

Nie rozumiem jednak, dlaczego takie pozornie zbędne nawiasy są wymagane. Na przykład następujący kod nie jest kompilowany:

#include <fstream>
#include <string>

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

Dlaczego jest tak wiele nawiasów, aby to skompilować?

questionAnswers(1)

yourAnswerToTheQuestion