4709203de6
The compiler complains about: error: explicit specialization of 'bssl::internal::Deleter<evp_pkey_st>' after instantiation This is because, although the deleter's operator() is not instantiated without emitting std::unique_ptr's destructor, the deleter itself *is*. Deleters are allowed to have non-zero size, so a std::unique_ptr actually embeds a copy of the deleter, so it needs the size of the deleter. As with all problems in computer science, we fix this with a layer of indirection. Instead of specializing the deleter, we specialize bssl::internal::DeleterImpl which, when specialized, has a static method Free. That is only instantiated inside bssl::internal::Deleter::operator(), giving us the desired properties. (Did I mention forward decls are terrible? I wish people wouldn't want them so much.) Also appease clang-format. Change-Id: I9a07b2fd13e8bdfbd204e225ac72c52d20a397dc Reviewed-on: https://boringssl-review.googlesource.com/10964 Reviewed-by: Matt Braithwaite <mab@google.com> Commit-Queue: David Benjamin <davidben@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> |
||
---|---|---|
.. | ||
openssl |