VSCodeで利用するC++のバージョンを初心者が変更する

## この記事の概要(動機と目標)
- C++ファイルの編集時やrun時(`code runner`を使用)に(おそらく)C++03が選択されていて，C++11以降の機能が使えない。
- 上記を解決することが目標。つまりC++11以降を使ってくれるように設定したい。今回は，なんとなくC++11の1つ後のC++14に設定していく。
## 環境
- OS：macOS Sierra (バージョン10.12.6)
- エディタ：Visual Studio Code (バージョン1.65.0)
- コンパイラ：Clang
- この記事に関わる拡張機能：`C/C++`，`Code Runner`
## 詳細な動機
競プロの勉強をしていて，`auto`なるものが出てきたのだが，
```c++:a.cpp
auto a = 4;
```
と書いたら，`明示的な型がありません('int'が想定されます) C/C++`と怒られた。
Code Runnerにて実行した際にも，`'auto' type specifier is a C++11 extension`と言われた(実行自体は問題なくできた)ので調べてみると，`auto`はC++11の機能らしい。

ところが，自分でターミナルからコンパイル・実行する際に，`-std=c++11`とオプションをつければ問題なくC++11で実行してくれることから，問題の原因はVSCode(の拡張機能)にあると判断。

よって，C++に関する拡張機能：`C/C++`と`Code Runner`の設定を変更することで問題が解決すると思われる。
## 実際に設定を変更する
#### `Code Runner`の設定
`settings.json`に以下を追記する。
```json:settings.json
{
    "clang.executable": "clang++",
    "code-runner.runInTerminal": true,
    "clang.cxxflags": [ "-std=c++14"],
    "code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ -O2 -std=c++14 $fileName && ./a.out",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run"
      }
}
```
出所：[C++で始める競プロ / VSCodeの環境構築（Mac）](https://qiita.com/YasufumiNakama/items/6efa6975f551a1986e89#c_cpp_propertiesjson-%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)
たぶん，`code-runner.executorMap`内の`"cpp"`の項目がとくに重要で，Run Codeしたときにターミナルに打ち込んでくれるコマンドを指定しているのだと思う。
この中で`-std=cpp14`というオプションを書いているため，C++14で実行してくれるようになる。`-std=cpp11`とすれば，C++11で実行してくれるのだろう。
`"clang.cxxflags"`が何をしているのかは，私には分かりませんすみません。
#### `C/C++`の設定
これまでの設定で，実行は問題なくできるようになった。
が，エディタ画面では相変わらず拡張機能`C/C++`(のIntelliSense(?)という機能らしい)がエラーを吐き出していて鬱陶しいことこの上ないので，こちらの設定も変更していく。

[VSCode公式](https://code.visualstudio.com/docs/cpp/config-clang-mac#_cc-configuration)を参考にした。ただし，公式のドキュメントではなにやら`c_cpp_properties.json`ファイルを直接編集しているが，今回の目的だけなら以下の方法でUIのみによる設定ができた。
1. `Shift+Command+P`でコマンドパレットをひらく
1. **C/C++: Edit Configurations (UI)** を選択
1. 下の方にある **C++標準** で **c++14** を選択

以上の設定により，編集，コンパイルともC++14で行うことができるようになった。
## まとめ
2. `settings.json`に追記することで`Code Runner`の設定を行う
2. コマンドパレットで`Edit Configurations (UI)`を選択し`C/C++`の設定を行う