template <typename T>
static constexpr size_t SerializedSizeSimple() {
static_assert(!std::is_pointer_v<T>);
- return base::bits::AlignUp(sizeof(T), kDefaultAlignment);
+ if constexpr (std::is_same_v<T, size_t>) {
+ // size_t is always serialized as two uint32_ts to make the serialized
+ // result portable between 32bit and 64bit processes.
+ return base::bits::AlignUp(2 * sizeof(uint32_t), kDefaultAlignment);
+ } else {
+ static_assert(!std::is_pointer_v<T>);
+ return base::bits::AlignUp(sizeof(T), kDefaultAlignment);
+ }
}
- // FIXME
- // size_t is always serialized as two uint32_ts to make the serialized result
- // portable between 32bit and 64bit processes.
- // template <>
- // constexpr size_t SerializedSizeSimple<size_t>() {
- // return base::bits::AlignUp(2 * sizeof(uint32_t), kDefaultAlignment);
- // }
#endif
public:
// SerializedSize() returns the maximum serialized size of the given type or