现在的问题是,为了实现这个功能,要写三个函数,感觉有点多。
另,我不想用这个帖子上的解决方案。
inline void InternalMD5Update(MD5_CTX* ctx, const std::string& data) {
MD5_Update(ctx, data.data(), data.size());
}
template<typename... TArgsPack>
void InternalMD5Update(MD5_CTX* ctx, const std::string& data, const TArgsPack&... args) {
InternalMD5Update(ctx, data);
InternalMD5Update(ctx, args...);
}
template<typename... TArgsPack>
std::string GetMd5(const TArgsPack&... args) {
MD5_CTX ctx;
unsigned char md5[16];
MD5_Init(&ctx);
InternalMD5Update(&ctx, args...);
MD5_Final(md5, &ctx);
return std::string(md5, sizeof(md5));
}