Updated: September 2008
The C++ standard recommends limits for various language constructs. The following is a list of constructs where the Visual C++ compiler does not implement the recommended limits. The first number is the recommended limit and the second number is the limit implemented by Visual C++:
Nesting levels of compound statements, iteration control structures, and selection control structures  (256).
Parameters in one macro definition  (127).
Arguments in one macro invocation  (127).
Characters in a character string literal or wide string literal (after concatenation)  (65535).
Levels of nested class, structure, or union definitions in a single struct-declaration-list  (16).
Member initializers in a constructor definition  (approximately 600, memory dependent, can increase with the /Zm compiler option).
Scope qualifications of one identifier  (127).
Nested external specifications  (10).
Template arguments in a template declaration  (64).