![]() |
1
21
这是一个可能的解决办法。它将始终选择给定层次结构中对齐度最高的运算符:
它基于支配规则:如果查找中存在歧义,并且歧义在派生类和虚拟基类的名称之间,则取而代之的是派生类的名称。
有人质疑为什么
因此,这将是
模棱两可的
我们将无法编译:这两个都没有隐藏另一个。但如果你现在继承
这个特殊的隐藏规则(也称为
显性
规则)但是只有在
全部的
|
![]() |
2
7
mixin是正确的方法,但是重载操作符new不是。这将满足您的需要:
印刷品
对于GCC,使用
注意,会自动选择最大的对齐方式,这适用于放置在堆栈上的对象、新的对象以及其他类的成员。它也不会添加任何虚拟对象,并且假设ebco没有额外的类大小(除了对齐本身所需的填充之外)。 |
![]() |
3
1
使用visualstudioexpress2010,上面的示例似乎不适用于new:
将给出u align_of(c)==4(我假设是预期的),但cachealign的第一个成员的地址也没有按请求对齐。 不是最近的问题,但如果我正确理解了op,那么他拥有的类是定义分配器和释放定位器的父类的子类,并且都需要特定的对齐。有一个简单的new调用一些私有分配器来完成实际工作并接收一个对齐参数——父类中具有默认对齐的泛型版本,该版本继承或重载了指定正确对齐的版本,这有什么不对? |
![]() |
Noah Wilder · Swift中元组的操作符重载 6 年前 |
![]() |
Salman · 指向具有数组索引运算符重载的类的指针 6 年前 |
![]() |
Nom OnTheCookie · 使用向量重载C++输出 6 年前 |
![]() |
J. Doe · C++重载:从友元函数切换到成员函数 6 年前 |
![]() |
Ana · 使用操作符重载添加存储在vector中的类对象 6 年前 |
![]() |
Matthew · 重载运算符|用于固定大小的阵列? 6 年前 |
![]() |
Martin Žid · 重载运算符+=具有两个类 6 年前 |