for (int i(0); i < 10; ++i) { ... }
for ループ初期化子内のint i(0)
構文は、標準 C++ で常に許可されていますか?
で問題なくコンパイルされますg++ -std=c++98
が、標準の詳細に関してはコンパイラを信頼していません。
for (int i(0); i < 10; ++i) { ... }
for ループ初期化子内のint i(0)
構文は、標準 C++ で常に許可されていますか?
で問題なくコンパイルされますg++ -std=c++98
が、標準の詳細に関してはコンパイラを信頼していません。
はい。これは単純な変数宣言 (言語文法における単純な宣言) であり、C++ for ループのfor-init-statement で(当時の C とは対照的に) 明示的に許可されていました。
特に、言語文法では、以下は同等です (どちらも単純宣言です)。
int i(0);
int i = 0;
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 )
そうです、for (int i(0); ...
構文は常に標準 C++ で許可されています。