【发布时间】:2018-12-23 12:29:21
【问题描述】:
我可以通过两种方式编写一个将临时数组(例如{1, 2, 3})作为参数的函数:
// using array
template<typename T, int N>
auto foo1(const T(&t)[N]) -> void;
// using std::initializer_list
template<typename T>
auto foo2(std::initializer_list<T> t) -> void;
是否有任何指导方针可以说明哪个更好?
【问题讨论】:
-
参见here,例如。
-
在第一个中你可以使用长度作为编译时常量,在第二个中你不能。相反,第一个不能接受长度未知的列表。
-
@MM 不确定我是否理解该评论。
-
@PaulSanders 在 foo2 中尝试
std::array<T, t.size()> x;(并调用它) -
@MM 好的,谢谢,我现在明白了。因此,通过不时从栏杆后面探出头来,我们学习了。
标签: c++ arrays c++11 initializer-list