BGL:没有默认构造函数的绑定对象
BGL: bundled object without a default constructor?
这个问题是关于Boost Graph Library
的。
假设我的图类型是这样定义的:
using Graph = boost::adjacency_list<vecS, setS, directedS, State>;
现在,如果我理解正确,我可以向图中添加一个新的State
对象s
,如下所示:
auto vd = add_vertex(g); // g is a Graph object
g[vd] = s;
这种方式有两个问题:
它要求CCD_ 4具有默认构造函数。在这个特殊类
State
的情况下,默认构造函数根本没有意义。通过这种方式,当添加顶点时,我为
State
对象的默认构造付费。此成本是纯粹的运行时开销。
那么,有没有一种方法可以避免对绑定对象使用默认构造函数?
文档:
所有属性值的类型都必须是Copy Constructable、Assignable和Default Constructable。从邻接列表类获得的属性映射是Lvalue属性映射概念的模型。如果邻接列表是常量,则属性映射是常量,否则属性映射是可变的。
您应该使属性类型能够容纳或引用您的State
。
对于第一步,您可能会成功地使用占用属性的过载:
auto vd = add_vertex(s, g); // g is a MutablePropertyGraph object
g[vd] = s;
请参阅其他文档
相关文章:
- 有没有办法将重载的类函数绑定到函数对象?
- Opengl 3/4 : 我可以将相同的缓冲区对象绑定到不同的目标吗?
- 未定义的对象(〔basic.life〕/8):为什么允许引用重新绑定(和常量修改)
- 如何发送通过绑定到函数/方法创建的函数对象?
- 与类而非对象绑定的可变变量
- 为什么临时对象可以绑定到常量引用?
- 无法在 QML/C++ 中使用绑定对象初始化 UI
- 实现功能对象绑定而无需使用C 11
- 是否可以将匿名 lambda 函数绑定到对象以允许 lambda 中的代码访问对象的成员?
- RValue 引用在将其绑定(非指针)对象分配给另一个指针后是否会删除该对象?
- 如何将Boost ::函数对象与所有参数绑定
- 将临时对象绑定到常量引用
- 为什么免费存储区中对象的生存期绑定到范围
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 为每个对象绑定不同的纹理
- std ::将参数绑定到没有对象的情况下的成员函数
- C++保存绑定对象并在ASIO之后使用它
- BGL:没有默认构造函数的绑定对象
- 如何在Qt中删除绑定对象