diff --git a/cpp/src/parquet/encryption/encryption_internal.cc b/cpp/src/parquet/encryption/encryption_internal.cc index d996de177f950..1dcf3c21f1415 100644 --- a/cpp/src/parquet/encryption/encryption_internal.cc +++ b/cpp/src/parquet/encryption/encryption_internal.cc @@ -79,8 +79,15 @@ class AesEncryptionContext { virtual ~AesEncryptionContext() = default; protected: - static inline std::function ctx_deleter_ = - [](EVP_CIPHER_CTX* ctx) { EVP_CIPHER_CTX_free(ctx); }; + static void DeleteCipherContext(EVP_CIPHER_CTX* ctx) { + EVP_CIPHER_CTX_free(ctx); + } + + using CipherContext = std::unique_ptr; + + static CipherContext WrapCipherContext(EVP_CIPHER_CTX* ctx) { + return CipherContext(ctx, DeleteCipherContext); + } int32_t aes_mode_; int32_t key_length_;