diff --git a/include/ipmid/types.hpp b/include/ipmid/types.hpp
index fb94aeb..8d65b0f 100644
--- a/include/ipmid/types.hpp
+++ b/include/ipmid/types.hpp
@@ -281,24 +281,42 @@
         return std::allocator<T>::deallocate(p, n);
     }
 };
-using SecureString =
+
+using SecureStringBase =
     std::basic_string<char, std::char_traits<char>, SecureAllocator<char>>;
+class SecureString : public SecureStringBase
+{
+  public:
+    using SecureStringBase::basic_string;
+    SecureString(const SecureStringBase& other) : SecureStringBase(other){};
+    SecureString(SecureString&) = default;
+    SecureString(const SecureString&) = default;
+    SecureString(SecureString&&) = default;
+    SecureString& operator=(SecureString&&) = default;
+    SecureString& operator=(const SecureString&) = default;
 
-using SecureBuffer = std::vector<uint8_t, SecureAllocator<uint8_t>>;
+    ~SecureString()
+    {
+        OPENSSL_cleanse(&((*this)[0]), this->size());
+    }
+};
 
+using SecureBufferBase = std::vector<uint8_t, SecureAllocator<uint8_t>>;
+
+class SecureBuffer : public SecureBufferBase
+{
+  public:
+    using SecureBufferBase::vector;
+    SecureBuffer(const SecureBufferBase& other) : SecureBufferBase(other){};
+    SecureBuffer(SecureBuffer&) = default;
+    SecureBuffer(const SecureBuffer&) = default;
+    SecureBuffer(SecureBuffer&&) = default;
+    SecureBuffer& operator=(SecureBuffer&&) = default;
+    SecureBuffer& operator=(const SecureBuffer&) = default;
+
+    ~SecureBuffer()
+    {
+        OPENSSL_cleanse(&((*this)[0]), this->size());
+    }
+};
 } // namespace ipmi
-
-namespace std
-{
-template <>
-inline ipmi::SecureString::~SecureString()
-{
-    OPENSSL_cleanse(&((*this)[0]), this->size());
-}
-
-template <>
-inline ipmi::SecureBuffer::~SecureBuffer()
-{
-    OPENSSL_cleanse(&((*this)[0]), this->size());
-}
-} // namespace std
