How to enable C++17 support in VSCode C++ Extension

There's a posting in their GitHub issue tracker about this: std::string_view intellisense missing (CMake, VC++ 2017).

In another issue, it is said that the extension defaults to C++17, but does not yet support all of C++17 features: Setting C++ standard.

This is confirmed by c_cpp_properties.json Reference Guide, where an option is listed cppStandard which defaults to C++17. (To edit this file, press Ctrl + Shift + P and type in C/CPP: Edit Configurations).

It appears, then, they just don't have full support yet.


This has become much easier now. Search for cppstandard in your vs code extension settings and choose the version of C++ you want the extension to use from the drop down.

enter image description here

In order to make sure your debugger is using the same version, make sure you have something like this for your tasks.json, where the important lines are the --std and the line after that defines the version.

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: g++ build active file",
      "command": "/usr/bin/g++",
      "args": [
        "--std",
        "c++17",
        "-I",
        "${fileDirname}",
        "-g",
        "${fileDirname}/*.cpp",
        "-o",
        "${workspaceFolder}/out/${fileBasenameNoExtension}.o"
      ],
      "options": {
        "cwd": "${workspaceFolder}"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
  ],
  "version": "2.0.0"
}

Just an updated. I got this issue as well.

I solve it by adding c_cpp_properties.json

  1. Ctrl + Shift + P then select C/C++:Edit Configurations (JSON)

  2. Adjust the content for cStandard and cppStandard:

        "cStandard": "gnu17",
        "cppStandard": "gnu++17",