'identifier' : illegal token on right side of '::'
If a class, structure, or union name appears to the left of the scope-resolution operator (double colons), the token on the right must be a class, structure, or union member. Otherwise, any global identifier can appear on the right.
The following sample generates C2589:
class A { }; void operator :: (); // C2589 void main() { }