无法从大括号初始值设定项列表转换为向量
Could not convert from brace initializer list to vector
我观察到下面代码中的编译错误"error:无法将'{{&Foo::print_add}, {&X::print}} '从"转换为'std::vector'"。
我做向量插入错误吗?顺便说一句,我不想使用push_back方法。是否可以使用'='插入。我有一种感觉,这是一个语法错误,但无法找到它。
当我用谷歌搜索时,我发现在早期版本的gcc中有一个bug。我使用的是4.8.1,所以我假设我使用的库应该包含修复。
#include <functional>
#include <iostream>
#include <vector>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << 'n'; }
int num_;
};
struct X {
void print() {
std::cout << "I'm in X "<<std::endl;
}
};
struct XXX {
std::function<void(const Foo&,int)> a;
std::function<void(const X&)> b;
};
int main()
{
std::vector<XXX> vec =
{
{
{&Foo::print_add},
{&X::print}
}
};
}
X::print
是一个非const
成员函数,因此指向它的指针不能用来初始化std::function<void(const X&)>
。
相关文章:
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 无法从"初始值设定项列表"转换为模板<int>
- 类型映射资源并将列表转换为矢量(并返回)
- 标准::列表转换和复制
- 错误 C2440:"正在初始化":无法从"初始值设定项列表"转换为"std::vector<char *,std::分配器<_Ty>>
- C 函数错误 - 无法将支撑封闭的初始化器列表转换为char*
- 如何将 uint8 列表转换为其相应的有符号值
- 无法从大括号括起来的初始值设定项列表转换
- 如何将边缘列表转换为DCEL数据结构
- 使用类继承将单个喜欢的列表转换为双向链表
- 如何在C++中将边列表转换为邻接矩阵,其中包含连接到顶点的边数而不是一条边?
- 基于字符串的数组,char列表转换
- 增强HANA编译时列表转换
- 是否可以使用元编程将类型列表转换为对列表中每种类型具有特定隐式转换行为的新类型?
- 无法从"<大括号括起来的初始值设定项列表>转换为
- 无法从<大括号括起来的初始值设定项列表转换>
- 自动将派生类的指针列表转换为基类的指针列表
- 将子类列表转换为超类列表
- 如何在生成文件中将.png列表转换为 pdf 列表
- 用C++将列表转换为对象的二维数组