Ber*_*ard 2 c++ constructor aggregate-initialization c++20
我正在编写一个由多个 s 组成的大型固定大小整数类型uint64_t,如下面的(简化的)示例所示。我希望我的类型表现得像内置整数类型,这意味着(除其他外):
然而,在我看来,人们无法编写一种同时满足这两个属性的类型。这是因为属性 1 要求类型是聚合,这意味着它必须没有构造函数,而我们需要一个构造函数来实现属性 2。
有没有办法编写一个满足这两个属性的大整数类型?
#include <array>
#include <cstdint>
struct uint128_t{
std::array<uint64_t, 2> data;
};
int main(){
uint128_t x; // uninitialized (good)
uint128_t y = 100; // can we make this work while ensuring that the previous line still works?
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,诸如此类的构造函数uint128_t() {}将使数组保持未初始化状态。使成员保持未初始化的能力与聚合无关。
但还有一个更好的选择:uint128() = default;。它将导致uint128_t x;未初始化,但uint128_t x{};会被清零,就像内置类型一样。
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |