(As an alternative to EBNF)
There don't exist any, as far as I know. The C++ syntax can't even be expressed in a proper EBNF - it's a context-sensitive grammar, and anything attempting to parse it has to be capable of processing C++ code at least as far as template instantiation and overload resolution (not to mention macros).
There isn't one - the C++ grammar is not only not context-free, it's undecidable. See http://yosefk.com/c++fqa/defective.html#defect-2 and the associated links for a more in-depth discussion.
I don't know if there are some railroad diagrams for the C++ diagrams (I don't value these image much) but it is a purely mechanical work to transform EBNF to these diagrams.
About the grammar of C++: If you look at the grammar in the appendix of the C++ standard, that is a context-free grammar. The problem with this grammar is that it is an ambiguous grammar. Another thing is, the grammar accepts strings that are not valid C++ programs - but this is true about every typed languages with variable declarations. If the gramar was undecidable, it would mean that you could not tell for some string if it was generated according to the grammar or not. BTW, it really is undecidable problem whether given C++ file compiles, because templates are Turing-complete.
The reason why this ambiguous grammar is frowned upon is that it makes the parser much more complex, slower and/or needing more memory.