C++23 P2448R2 [1] relaxed the requirements for constexpr destructors.
In C++23, UniquePtr's destructor, move constructor, and null assignment
operator constexpr.
FileSystemDatabaseManagerVersion001's inline destructor destroys
UniquePtr<FileSystemFileManager> while FileSystemFileManager is only
forward declared. LSWriteOptimizerBase's inline constructors and Reset()
can destroy or reset UniquePtr<WriteInfo> before the nested WriteInfo
definition.
Move these definitions to the corresponding .cpp files, where the
UniquePtr pointee types are complete.
[1] https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2448r2.html
obj-aarch64-apple-darwin25.3.0/dist/include/mozilla/dom/LSWriteOptimizer.h:43:3: note: in instantiation of member function 'std::unique_ptr<mozilla::dom::LSWriteOptimizerBase::WriteInfo>::~unique_ptr' requested here
43 | LSWriteOptimizerBase() : mLastSerialNumber(0), mTotalDelta(0) {}
| ^
obj-aarch64-apple-darwin25.3.0/dist/include/mozilla/dom/LSWriteOptimizer.h:31:9: note: forward declaration of 'mozilla::dom::LSWriteOptimizerBase::WriteInfo'
31 | class WriteInfo;
| ^
Differential Revision: https://phabricator.services.mozilla.com/D323892