ld.lld: error: undefined symbol: unsigned long cc::PaintOpWriter::SerializedSize() diff -up chromium-122.0.6261.69/cc/paint/paint_op_writer.h.me chromium-122.0.6261.69/cc/paint/paint_op_writer.h --- chromium-122.0.6261.69/cc/paint/paint_op_writer.h.me 2024-02-25 12:04:07.008177603 +0100 +++ chromium-122.0.6261.69/cc/paint/paint_op_writer.h 2024-02-25 12:14:45.972117522 +0100 @@ -112,7 +112,17 @@ class CC_PAINT_EXPORT PaintOpWriter { private: template - static constexpr size_t SerializedSizeSimple(); + static constexpr size_t SerializedSizeSimple() { + static_assert(!std::is_pointer_v); + return base::bits::AlignUp(sizeof(T), kDefaultAlignment); + } + + // 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() { + return base::bits::AlignUp(2 * sizeof(uint32_t), kDefaultAlignment); + } public: // SerializedSize() returns the maximum serialized size of the given type or @@ -123,7 +133,10 @@ class CC_PAINT_EXPORT PaintOpWriter { // deserialization, and make it possible to allow dynamic sizing for some // data types (see the specialized/overloaded functions). template - static constexpr size_t SerializedSize(); + static constexpr size_t SerializedSize() { + static_assert(std::is_arithmetic_v || std::is_enum_v); + return SerializedSizeSimple(); + } template static constexpr size_t SerializedSize(const T& data); static size_t SerializedSize(const PaintImage& image); @@ -439,24 +452,6 @@ class CC_PAINT_EXPORT PaintOpWriter { }; template -constexpr size_t PaintOpWriter::SerializedSizeSimple() { - static_assert(!std::is_pointer_v); - return base::bits::AlignUp(sizeof(T), kDefaultAlignment); -} - -// size_t is always serialized as two uint32_ts to make the serialized result -// portable between 32bit and 64bit processes. -template <> -constexpr size_t PaintOpWriter::SerializedSizeSimple() { - return base::bits::AlignUp(2 * sizeof(uint32_t), kDefaultAlignment); -} - -template -constexpr size_t PaintOpWriter::SerializedSize() { - static_assert(std::is_arithmetic_v || std::is_enum_v); - return SerializedSizeSimple(); -} -template constexpr size_t PaintOpWriter::SerializedSize(const T& data) { return SerializedSizeSimple(); }