我想知道以下代码是否会获得更好的性能
Obj obj;
obj.a = std::move(...);
...
与
相比Obj obj = {std::move(...), ...};
编译器可以对上面的代码进行优化吗?
您更喜欢哪种方式?
答案 0 :(得分:0)
我尝试了http://godbolt.org/一个简单的代码实现,并发现在两种情况下编译器都能够进行优化。
如果没有性能差异,我更喜欢第一个,因为初始化列表过载太多了。例如,让Obj成为一个具有构造函数的类,该构造函数将两个整数作为参数。你知道std :: vector< int>还有一个构造函数,它接受两个整数作为参数。但是当你给一个向量<的初始化列表{1,3}。 int&gt ;,不调用双整数参数构造函数!与Obj案不同。