sách gpt4 ăn đã đi

c++ - 我可以使用折叠表达式实现 max(A, max(B, max(C, D))) 吗?

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 12:58:45 28 4
mua khóa gpt4 giày nike

在尝试使用 C++17 折叠表达式时,我尝试实现 max kích thước của ,其中结果是类型 kích thước của 的最大值。我有一个使用变量和 lambda 的丑陋折叠版本,但我想不出一种使用折叠表达式和 std::max() 来获得相同结果的方法。

这是我的折叠版本:

template
constexpr size_t max_sizeof(){
size_t max=0;
auto update_max = [&max](const size_t& size) {if (max
(update_max(sizeof (T)), ...);
return max;
}


static_assert(max_sizeof() == 8);
static_assert(max_sizeof() == sizeof(float));
static_assert(max_sizeof() == 4);

我想使用折叠表达式和 std::max() 编写等效函数。例如对于 3 个元素,它应该扩展为

return std::max(sizeof (A), std::max(sizeof(B), sizeof (C)));

有可能吗?

câu trả lời hay nhất

由于还没有人发布这个作为答案,最简单的方法就是使用 std::max() 的重载。这是为这个问题准备好的:接受 initializer_list 的那个:

template
constexpr size_t max_sizeof() {
return std::max({sizeof(T)...});
}

关于c++ - 我可以使用折叠表达式实现 max(A, max(B, max(C, D))) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404503/

28 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress