Search code examples
c++syntaxfor-loopinitializationparentheses

parentheses inside for loop initialization


for (int i(0); i < 10; ++i) { ... }

Has the int i(0) syntax inside the for loop initializer always been allowed in standard C++?

It compiles fine with g++ -std=c++98, but I don't trust compilers when it comes to standard details.


Solution

  • Here are the relevant parts of the syntax found in The C++ Programming Language, Appendix A:

    iteration-statement:
        ...
        for (for-init-statement condition_opt; expression_opt) statement
    
    for-init-statement:
        ...
        simple-declaration
    
    simple-declaration:
        decl-specifier-seq_opt init-declarator-list_opt;
    
    init-declarator-list:
        init-declarator
        init-declarator-list , init-declarator
    
    init-declarator:
        declarator initializer_opt
    
    initializer:
        = initializer_clause
        ( expression-list )
    

    So yes, the for (int i(0); ... syntax has always been allowed in standard C++.