¿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?