The syntax checker in the IDE is not 100% reliable. They are getting better and better, but 100% accuracy is not achievable, especially not for languages like C and C++ that allow pre-processor macros and the like.
Certain combinations of #include stuff, combined with name-spaces and macro-expansions can throw the syntax checker of, even though the code is actually correct.
An error (or just a warning) somewhere in the code or an include may also create spurious syntax-warnings further down in the source-file.
This is not only an issue with Visual Studio. It can happen in any IDE or editor that does syntax highlighting/checking. I have seen it happen in XCode, Eclipse and CodeBlocks too, just to name a few examples.
In general: If you encounter something like this, it is usually an indication that the source-code that defines the declaration (the include that defines explode() in your case) is possibly written in an unclear, ambiguous or even wrong way. Even though it compiles for your particular use of explode() in the source it may not do so for all possible use-cases.
You should consider re-working that code so it doesn't show the red line anymore. It will be confusing to another programmer that needs to work on the code later. And that other programmer can be you, if you need to re-visit the code a few months later and have forgotten all about this.