涉及什么机制,如果在返回类型时,可以从初始化列表中构造,我没有指定我返回的类型,如:
std::array<int, 3> make_array()
{
return { 1, 2, 3 };
}
而不是
std::array<int, 3> make_array()
{
return std::array<int, 3>{ 1, 2, 3 };
}
如果我在没有指定类型的情况下返回初始化列表,是否会涉及性能损失?我实际上是在返回一个数组,它被转换为std::array
?
答案 0 :(得分:17)
不涉及性能惩罚。返回值的构造等同于
std::array<int, 3> x = { 1, 2, 3 };
甚至没有涉及std::array
实例的单个副本或移动。
答案 1 :(得分:2)
该机制只是一个构造函数:
struct X {};
struct Y {
Y(X);
};
Y f() {
X x;
return x;
}