gpt4 book ai didi

c++ - Visual Studio 中的 std::initializer_list 歧义

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:12 25 4
gpt4 key购买 nike

我正在尝试将 std::initializer_list 接受到通用构造函数中,如下所示:

template<typename T>
class Test{
std::vector<T> V;

Test(std::initializer_list<T>& list) : V(list){}

};

使用

Test<int> test{ 1, 2, 3, 4 };

但是我得到了错误:

error C2440: 'initializing' : cannot convert from 'initializer-list' to 'Test<int>' No constructor could take the source type, or constructor overload resolution was ambiguous

我只是不确定我在这里做错了什么。

最佳答案

Test(std::initializer_list<T>& list) : V(list){}

这通过非 const 引用获取 std::initializer_list,但您随后尝试将临时绑定(bind)到它,这是非法的

std::initializer_list 被设计为轻量级的,因此您可以按值传递它:

Test(std::initializer_list<T> list) : V(list){}
// ^ no &

关于c++ - Visual Studio 中的 std::initializer_list 歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com