He tried the classic "Clean Solution" — no change. He deleted the .vs folder — no change. He turned off precompiled headers — no change. He whispered an ancient mantra: "It’s not the compiler, it’s you." — still no change.

Tomorrow, he would refactor it to C++20. He heard std::span was finally stable. But tonight, he had earned his sleep.

Then, at 11:47 PM, it happened.

class VoxelGrid : public Serializable { public: virtual void serialize(Archive& ar) override; }; Everything looked perfect. No typos. No missing includes. The virtual keyword matched. The override was correct.

VS2019’s IntelliSense had auto-completed the signature in the .cpp file from a previous version of the header. It was a silent, invisible mismatch. The compiler saw them as two entirely different functions. One was implemented. One was pure virtual and missing. The linker, as always, took the blame.