首页 > 解决方案 > std::vector 构造函数中奇怪的额外括号对?

问题描述

有人可以详细说明为什么下面代码中额外的一对括号对于正确编译是必要的吗?我们正在创建一个std::ifstream并将其中的所有内容读入一个std::vector......我在堆栈溢出的示例中看到了这些括号,但我无法弄清楚为什么它们会改变编译器解释代码的方式:

#include <fstream>
#include <vector>

int main()
{
    std::ifstream curFile("file.txt", std::ios::binary);

    std::vector<char> fileContents(
        (std::istreambuf_iterator<char>(curFile)),      //why?
        std::istreambuf_iterator<char>()
    );
}

我正在谈论的括号包装了istreambuf_iterator构造函数。没有它们,编译器似乎认为这fileContents是一个函数声明。

标签: c++

解决方案


推荐阅读