c++ - std::begin 如何推导 braced-init-list 的类型?

标签 c++ c++11

以下代码失败:

template <typename T>
void func(T& t)
{
}

int main()
{
    func({1, 2, 3});
}

但是对于 auto a = {1, 2, 3}; 它是有效的,因为规则允许 auto 推导出一个 std::initializer_liststd::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/

相关文章:

c++ - 允许使用右值的地址吗?

C++11 表达式中的变量类型?

c++ - 两个物体的蛮力碰撞检测速度太慢

c++ - C++ 程序员需要一些帮助

c++ - dyld : Library not loaded: lib/libopencv_core. 3.0.dylib 原因:找不到图片

c++ - std::move 两个双端队列 - 输入与输出迭代器

c++ - 模板如何影响 C++ 中的隐式声明规则?

c++ - SDL 不显示形状

c++ - 通过头文件确定.lib/.dll

c++ - const auto& 用于存储函数结果,值得吗?