Hey Mike. I have your scenario exactly as written. From inside the <> markers (on CFoo) F12 and Alt-F12 both correctly take the cursor and focus to the CFoo class. From outside the <> markers (on CT) both F12 and Alt-F12 both correctly take the cursor and focus to the CT class. So I'm not sure how you are seeing this. Question when you hover over the CT<CFoo> statement are the quick info message boxes correct? So if you hover over the CT in CT<CFoo> you see a popup for class CT<CFoo> and if you hover over the CFoo you see a popup for class CFoo? Go to definition should be using the same information as Quick Info so knowing if those are showing the right values might help.

Crap. When boiled down to simply this in a test-project, it works as expected. This suggests the problem is the F12 handler is for some reason getting confused by something, even that the CTRL+', ' handler is able to find "CFoo". Please leave this issue open for a while, even with this (negative-repro) feedback. I'll try to boild down a repro and post a follow up.

Chances are it will currently take a while to find and produce a repro. To not clog up the queue/db, feel free to close this with something like "Not enough info". If/when I find a boiled down repro I'll create a new case for it.

While I haven't yet managed to boil it down, I have a little more info that could narrow the search scope. In a Solution with multiple (just two is enough) projects, where one is only a reference, and it's set to not produce any output, and all files in it are set to not be compiled (long story short, it's a recovery from storage problems, so it's definitely not well formed). The main project is the one set to produce output. Many types are indeed replicated over these two projects, and it seems IPCH is picking up types from both, and often gets confused when there are a combination of fwd. decl. and actual type definitions in multiple places. I'd love to see an option (even if a pragma) to disable IPCH for the "broken" code, so it's only using the "to-be-working" code. That said, when hitting F12, often I only get a list of type (and at that one fwd. decl. and then the actual definition - which suggests another bug), but in CTRL+',' I get the option to navigate between more places (including the correct fwd. decl. and finally the intended definition of a type). While I try to boil it down to an actual repro, I hope this extra info help you narrow the search scope.

Ok, I've filed a bug at this point and I've put a link to the extra info that you have provided here into the bug. That way the devs here can see that extra information. Given that the repro is a bit odd I'd expect that a developer might be pinging you back here soon.

Thank you for your feedback! We have determined that this issue is not a bug. Because we can't reproduce this issue on our side, please try to repair your VS or upgrade your VS to the latest version to see if it works.