diff --git a/src/serialize.h b/src/serialize.h index 19585c630ab..a0b012b25c8 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -710,14 +710,12 @@ template void Unserialize(Stream& is, std::basic_st /** * prevector - * prevectors of unsigned char are a special case and are intended to be serialized as a single opaque blob. */ template inline void Serialize(Stream& os, const prevector& v); template inline void Unserialize(Stream& is, prevector& v); /** * vector - * vectors of unsigned char are a special case and are intended to be serialized as a single opaque blob. */ template inline void Serialize(Stream& os, const std::vector& v); template inline void Unserialize(Stream& is, std::vector& v); @@ -820,10 +818,9 @@ void Unserialize(Stream& is, std::basic_string& str) template void Serialize(Stream& os, const prevector& v) { - if constexpr (std::is_same_v) { + if constexpr (BasicByte) { // Use optimized version for unformatted basic bytes WriteCompactSize(os, v.size()); - if (!v.empty()) - os.write(MakeByteSpan(v)); + if (!v.empty()) os.write(MakeByteSpan(v)); } else { Serialize(os, Using>(v)); } @@ -833,7 +830,7 @@ void Serialize(Stream& os, const prevector& v) template void Unserialize(Stream& is, prevector& v) { - if constexpr (std::is_same_v) { + if constexpr (BasicByte) { // Use optimized version for unformatted basic bytes // Limit size per read so bogus size value won't cause out of memory v.clear(); unsigned int nSize = ReadCompactSize(is); @@ -856,10 +853,9 @@ void Unserialize(Stream& is, prevector& v) template void Serialize(Stream& os, const std::vector& v) { - if constexpr (std::is_same_v) { + if constexpr (BasicByte) { // Use optimized version for unformatted basic bytes WriteCompactSize(os, v.size()); - if (!v.empty()) - os.write(MakeByteSpan(v)); + if (!v.empty()) os.write(MakeByteSpan(v)); } else if constexpr (std::is_same_v) { // A special case for std::vector, as dereferencing // std::vector::const_iterator does not result in a const bool& @@ -877,7 +873,7 @@ void Serialize(Stream& os, const std::vector& v) template void Unserialize(Stream& is, std::vector& v) { - if constexpr (std::is_same_v) { + if constexpr (BasicByte) { // Use optimized version for unformatted basic bytes // Limit size per read so bogus size value won't cause out of memory v.clear(); unsigned int nSize = ReadCompactSize(is);