我个人觉得{}在很大程度上是给模板用的
基本上来说,如果人肉显式区别{}和(),那基本上{}是填充内存,初始化aggregates的。()基本上是把ctor当成一个builder函数。这个区别可能是在机器代码层面的,具体的我不清楚,可能初始化内存可以在编译时搞定,呼叫builder函数就是运行时?大概
但是一旦涉及模板,如果{}不能兼容()的话,那在模板中构造object的时候,还需要区分这个object到底是不是aggregates,然后再选择对应的{}或者(),那就很麻烦了,所以{}需要兼容()
cpp很多新东西,如果放在模板和编译器优化上来看,就比较清楚了
【 在 here080 的大作中提到: 】
: 没错。
: int x = 3;
: vector<int> = {1,2,3};
: ...................
--
FROM 115.193.191.*