使用折叠表达式计算最大值
#include<iostream>
class A{};
class B{};
class C{};
class D{};
template<class T>
constexpr auto max(T t)
{
return t;
}
template<class T, class ...Args>
constexpr auto max(T t, Args... args)
{
T tmp = max(args...);
return t > tmp ? t : tmp;
}
int main()
{
std::cout<<max(sizeof(A), sizeof(B), sizeof(C), sizeof(D))<<std::endl;
char buf[max(sizeof(A), sizeof(B), sizeof(C), sizeof(D))];
return 0;
}
大小端转换
template<class T>
void reverse(T& t){
size_t len = sizeof(T);
T tmp;
for(int i = 0; i< len; i++){
*(reinterpret_cast<int8_t *>(&tmp) + i) = *(reinterpret_cast<int8_t *>(&t) + (len - 1 - i));
}
t = tmp;
}