在initializer_list上使用数据

时间:2019-05-24 20:48:26

标签: c++ pointers pass-by-reference initializer-list pass-by-value

所以我在看data函数,发现它有这个重载:

template <class E>
constexpr const E* data(std::initializer_list<E> il) noexcept;

假设我用以下方式致电foo(data({ 0, 13, 42 }))

void foo(const int* param) {
    cout << param[0] << ' ' << param[1] << ' ' << param[2] << endl;
}

我实际上是在复制initializer_list吗?

1 个答案:

答案 0 :(得分:3)

是的,您正在复制initializer_list

但是,您不是在复制“整数列表”。

initializer_list本质上是一个指针和一个长度。