При попытке играть с 17-кратным выражением С++ я попытался реализовать max sizeof
, где результат максимален для sizeof
типов.
У меня есть уродливая версия сложения, которая использует переменную и лямбда, но я не могу придумать способ использования флеш-выражений и std::max()
, чтобы получить тот же результат.
Это моя сводная версия:
template<typename... T>
constexpr size_t max_sizeof(){
size_t max=0;
auto update_max = [&max](const size_t& size) {if (max<size) max=size; };
(update_max(sizeof (T)), ...);
return max;
}
static_assert(max_sizeof<int, char, double, short>() == 8);
static_assert(max_sizeof<char, float>() == sizeof(float));
static_assert(max_sizeof<int, char>() == 4);
Я хотел бы написать эквивалентную функцию, используя выражения сгиба и std::max()
.
Например, для 3 элементов он должен расширяться до
return std::max(sizeof (A), std::max(sizeof(B), sizeof (C)));
Можно ли это сделать?