无法从"初始值设定项列表"转换为"std::initializer_list<Keyword> &"
Cannot convert from 'initializer-list' to 'std::initializer_list<Keyword> &'
我试图使用初始化列表将关键字列表传递给标记器以进行注册。但它在Visual Studio 2013中不起作用。它在ideone.com的gcc中工作。有没有办法在VS中使用这个或类似的语法?
struct Keyword
{
const char* name;
int id;
};
void AddKeywords(int group, std::initializer_list<Keyword>& lis) {}
// usage
AddKeywords(ITEM_TYPE, {
{ "weapon", IT_WEAPON },
{ "armor", IT_ARMOR }
});
完整错误:
item.cpp(810): error C2664: 'void AddKeywords(int,std::initializer_list<Keyword> &)' : cannot convert argument 2 from 'initializer-list' to 'std::initializer_list<Keyword> &'
您正在尝试将临时对象绑定到非const引用;
std::initializer_list<Keyword>& lis
尝试;
std::initializer_list<Keyword> const& lis
或
std::initializer_list<Keyword> lis
当使用GCC构建时,启用-Wall -pedantic
,它也会给你一个错误。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用 std::min "no matching function for call to ‘min(<brace-enclosed initializer list>)’"时出错
- std::move in initializer lists
- "默认参数":无法从'initializer list'转换为'std::initializer_list'
- 无法运行简单的 std::async 和 std::future 测试程序。错误:"has initializer but incomplete type."发生了什么?
- 在GCC中使用Brace Initializer初始化成员STD ::数组时错误
- VS2015无法从'initializer list'转换为'std::string'错误
- 如何使用 std::array 的默认参数? "array must be initialized with a brace-enclosed initializer"
- 为什么我会收到"variable 'std::packaged_task<int> task' has initializer but incomplete type"错误
- 为什么从std::string的initializer列表中填充std::向量不会调用std::字符串构造函数
- 如何解决"Variable 'std::ifstream myfile' has initializer but incomplete type"
- 将Initializer Lists与std::map一起使用
- <function-style-cast> 错误:无法从'initializer list'转换为'std::thread'