Is _ (single underscore) a valid C++ variable name?
According to Stroustrup (3rd edition, section 4.9.3), an identifier consists of a sequence of letters and digits. The first character must be a letter. The underscore character is considered a letter.
So, yes, it should be portable.
Yes, from The C++ Programming Language, 4th Edition:
A name (identifier) consists of a sequence of letters and digits. The first character must be a letter. The underscore character, _, is considered a letter.