以下代码失败:
template <typename T>
void func(T& t)
{
}
int main()
{
func({1, 2, 3});
}
但auto a = {1, 2, 3};
可以使用auto
,因为规则允许std::initializer_list
推导std::begin
。如何编写std::begin({1, 2, 3})
以允许{{1}}工作?
答案 0 :(得分:7)
std::begin({1, 2, 3})
有效,因为std::begin
有一个overload taking an std::initializer_list
。