返回初始化列表机制

时间:2013-06-21 16:49:05

标签: c++ c++11

涉及什么机制,如果在返回类型时,可以从初始化列表中构造,我没有指定我返回的类型,如:

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

2 个答案:

答案 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;
}