for ループに基づく新しい C++11 範囲を使用しようとしています。これが私のプログラムです:
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
ofstream logger("log.txt");
void log(string message)
{
logger << message << std::endl;
logger.flush();
}
int main( int argc, char* args[] )
{
log("hello world");
cout << "hello world\n";
log("declare sort me");
int sortMe[10];
log("loop sortMe");
for(int i : sortMe) {
log("in loop " + i);
sortMe[i] = i + 1;
}
}
コンパイルにはclang ++を使用しています。コンパイルすると、次の警告が表示されます。
clang++ -o mycpp mycpp.cpp
mycpp.cpp:24:12: warning: range-based for loop is a C++11 extension
[-Wc++11-extensions]
for(int i : sortMe) {
^
1 warning generated.
実行すると、次の出力が得られます。
hello world
Segmentation fault (core dumped)
log.txt ファイルによると、プログラムは for ループに到達しますが、for ループには決して入りません。私は何が欠けていますか?