返回初始化列表机制

use*_*108 12 c++ c++11

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

std::array<int, 3> make_array()
{
  return { 1, 2, 3 };
}
Run Code Online (Sandbox Code Playgroud)

代替

std::array<int, 3> make_array()
{
  return std::array<int, 3>{ 1, 2, 3 };
}
Run Code Online (Sandbox Code Playgroud)

如果我在没有指定类型的情况下返回初始化列表,是否涉及任何性能损失?我实际上是在返回一个数组,即转换为std::array

Joh*_*itb 17

不涉及性能处罚.返回值的构造等价于

std::array<int, 3> x = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

甚至没有std::array涉及实例的单个副本或移动.