以下代码失败:
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})
工作?
最佳答案
std::begin({1, 2, 3})
有效是因为 std::begin
有一个 overload taking an std::initializer_list
.
关于c++ - std::begin 如何推导 braced-init-list 的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870303/