#ifndef HASH_SHA3_2019_02_06_H #define HASH_SHA3_2019_02_06_H #include #if(__cplusplus >= 201703L) namespace al::crypto::stream::hash { #else namespace al { namespace crypto { namespace stream { namespace hash { #endif template class hash_sha3 : public al::crypto::stream::hash::hash_keccak_f_1600_base { private: using base_class_type = al::crypto::stream::hash::hash_keccak_f_1600_base; public: hash_sha3() = default; hash_sha3(const hash_sha3& other) : base_class_type(static_cast(other)) { } hash_sha3(hash_sha3&& other) noexcept : base_class_type(static_cast(other)) { } ~hash_sha3() override = default; auto operator=(const hash_sha3& other) -> hash_sha3& // NOLINT(cert-oop54-cpp) { if(this != &other) { static_cast(base_class_type::operator=(static_cast(other))); } return *this; } auto operator=(hash_sha3&& other) noexcept -> hash_sha3& { static_cast(base_class_type::operator=(static_cast(other))); return *this; } }; #if(__cplusplus >= 201703L) } // namespace al::crypto::stream::hash #else } // namespace hash } // namespace stream } // namespace crypto } // namespace al #endif #endif // HASH_SHA3_2019_02_06_H