VS 2017 IntelliSense shows fake errors in error-free code

That’s valid isn’t it? If you don’t include the object’s header, then you’re just forward declaring and the compiler doesn’t know where the object’s definition is.