Today, Intellisense suddently stopped working (code completely black, no suggestions), after I left to get some food. I spent 2 hours trying to reset stuff, repull the repo, even installed f*cking Visual-Studio 2017 (already been negatively conditioned towards VS2015 being buggy for me...), but couldn't get it to run.
By accident, I landed on an older branch of the project, and now suddenly everything was working again. I realized that this bug would only affect certain files in the newest commit, but since changing include files only sometimes and inconsitently worked, I pretty much ended up undoing every single file until I finally got some highlighting in the affected files. I found the responsible file, which had numerous changes, so I undid every single unit of change until I found whats responsible:
template<typename AttributeEntry>
struct BaseDeclaration
{
using EntryVector = std::vector<AttributeEntry>;
BaseDeclaration(std::wstring strName, EntryVector vEntries) :
m_strName(std::move(strName)), m_vEntries(std::move(vEntries))
{
}
template<typename OtherEntry>
BaseDeclaration(std::wstring strName, std::vector<OtherEntry> vOtherEntries) :
m_strName(std::move(strName))
{
// ... doesn't matter
}
// ...
};
The addition of the second constructor fucked up intellisense, but only outside of this file (inside the file, everything worked fine) and without any kind of warning/error. Removing it fixed everything. Sigh. I'm still trying to figure out whats the exact problem (probably ambiguity?) and how to circumvent it, but I just needed to let out some fruststration about a totally wasted evening...