你不能用括号来做到这一点,但你可以使用统一的初始化语法(即使用大括号)。
您所需要的只是一个构造函数,Edge它接受两个整数(您已经拥有)和 astd::initializer_list<Edge>作为Graph' 构造函数的唯一参数(您几乎拥有,只是缺少模板参数):
#include <initializer_list> // FOR std::initializer_list
struct Edge
{
    Edge(int out, int in) { /* ... */ }
    // Do not put any constructor taking an std::initalizer_list here,
    // otherwise it will be picked instead of the one above when using
    // uniform initialization syntax.
    // ...
};
struct Graph
{
    Graph(std::initializer_list<Edge> list) { /* ... */ }
    // ...
};
然后,您可以按如下方式构建图表:
int main()
{
    Graph g1 = { {1,2}, {3,4}, {5,1}, {5,3} };
    Graph g2 = { Edge(1,2), Edge(3,4), Edge(5,1), Edge(5,3) };
    Graph g3 = { Edge{1,2}, Edge{3,4}, Edge{5,1}, Edge{5,3} };
}
这是一个编译的实时示例。