我在SO上看到的几乎所有帖子中都包含a std::initializer_list
,人们倾向于std::initializer_list
按值传递a 。根据这篇文章:
http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/
如果要复制所传递的对象,则应按值传递。但是复制astd::initializer_list
不是一个好主意,因为
复制a
std::initializer_list
不会复制基础对象。在原始初始化程序列表对象的生存期结束后,不能保证基础数组存在。
那么,为什么它的一个实例经常按值而不是按值传递const&
,即保证不会产生不必要的复制?