无法从 'initializer-list' 转换为 '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> &'
您正在尝试将临时对象绑定到非常量引用;
std::initializer_list<Keyword>& lis
试试吧;
std::initializer_list<Keyword> const& lis
或者
std::initializer_list<Keyword> lis
使用 GCC 构建时,启用 -Wall -pedantic
它也会给您一个错误。
我正在尝试使用初始化列表将关键字列表传递给分词器进行注册。但它在 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> &'
您正在尝试将临时对象绑定到非常量引用;
std::initializer_list<Keyword>& lis
试试吧;
std::initializer_list<Keyword> const& lis
或者
std::initializer_list<Keyword> lis
使用 GCC 构建时,启用 -Wall -pedantic
它也会给您一个错误。