CLion 2017.1 Help

C++ Support

Currently, CLion supports all the C++ standards up to C++14 and partially the C++17.
The table below represents the list of features supported by CLion for the respective standards.
Legend:
/help/img/idea/2017.1/appIconOk512.png - Supported.
/help/img/idea/2017.1/stop@2x.png - Not supported.

C++17Status
Nested namespace definition /help/img/idea/2017.1/appIconOk512.png
fold-expressions
/help/img/idea/2017.1/stop@2x.png
Class template deduction
/help/img/idea/2017.1/stop@2x.png
auto non-type parameters
/help/img/idea/2017.1/stop@2x.png
UTF-8 character literals
/help/img/idea/2017.1/stop@2x.png
__has_include /help/img/idea/2017.1/appIconOk512.png
Lambda capture of *this
/help/img/idea/2017.1/stop@2x.png
[[nodiscard]] attribute
/help/img/idea/2017.1/stop@2x.png
[[fallthrough]] attribute
/help/img/idea/2017.1/stop@2x.png
[[maybe_unused]] attribute
/help/img/idea/2017.1/stop@2x.png
Made noexcept as a part of the function type
/help/img/idea/2017.1/stop@2x.png
One-argument static assert
/help/img/idea/2017.1/stop@2x.png
if constexpr
/help/img/idea/2017.1/stop@2x.png
Initializers in if and switch statements
/help/img/idea/2017.1/stop@2x.png
Inline variables
/help/img/idea/2017.1/stop@2x.png
New rules for auto deduction from braced-init-list
/help/img/idea/2017.1/stop@2x.png
C++14
Variable templates
/help/img/idea/2017.1/appIconOk512.png
Generic lambdas
/help/img/idea/2017.1/appIconOk512.png
Binary literals
/help/img/idea/2017.1/appIconOk512.png
Aggregate initialization for classes with brace-or-equal initializers
/help/img/idea/2017.1/appIconOk512.png
[[deprecated]] attribute
/help/img/idea/2017.1/appIconOk512.png
Single quote as digit separator
/help/img/idea/2017.1/appIconOk512.png
Return type deduction for normal functions
/help/img/idea/2017.1/appIconOk512.png
Generalized lambda capture
/help/img/idea/2017.1/appIconOk512.png
constexpr specifier
/help/img/idea/2017.1/stop@2x.png
C++11
auto specifier
/help/img/idea/2017.1/appIconOk512.png
decltype specifier
/help/img/idea/2017.1/appIconOk512.png
final specifier
/help/img/idea/2017.1/appIconOk512.png
override specifier
/help/img/idea/2017.1/appIconOk512.png
Trailing return initialization
/help/img/idea/2017.1/appIconOk512.png
rvalue references
/help/img/idea/2017.1/appIconOk512.png
Variadic templates
/help/img/idea/2017.1/appIconOk512.png
List initialization
/help/img/idea/2017.1/appIconOk512.png
In-class member initializers
/help/img/idea/2017.1/appIconOk512.png
Delegating constructors
/help/img/idea/2017.1/appIconOk512.png
Inheriting constructors
/help/img/idea/2017.1/appIconOk512.png
nullptr
/help/img/idea/2017.1/appIconOk512.png
long long
/help/img/idea/2017.1/appIconOk512.png
char16_t and char32_t
/help/img/idea/2017.1/appIconOk512.png
Generalized unions
/help/img/idea/2017.1/appIconOk512.png
Generalized POD's
/help/img/idea/2017.1/appIconOk512.png
thread_local storage
/help/img/idea/2017.1/appIconOk512.png
GC interface
/help/img/idea/2017.1/appIconOk512.png
range for
/help/img/idea/2017.1/appIconOk512.png
Static asserts
/help/img/idea/2017.1/appIconOk512.png
Explicit specifier
/help/img/idea/2017.1/appIconOk512.png
default/ delete keywords
/help/img/idea/2017.1/appIconOk512.png
Scoped enum
/help/img/idea/2017.1/appIconOk512.png
thread_local keyword
/help/img/idea/2017.1/appIconOk512.png
noexcept specifier
/help/img/idea/2017.1/appIconOk512.png
noexcept operator
/help/img/idea/2017.1/appIconOk512.png
Inline namespaces
/help/img/idea/2017.1/appIconOk512.png
alignof / alignas specifiers
/help/img/idea/2017.1/appIconOk512.png
extern template
/help/img/idea/2017.1/appIconOk512.png
attribute specifier sequence
/help/img/idea/2017.1/appIconOk512.png
Lambda functions
/help/img/idea/2017.1/appIconOk512.png
Raw string literals
/help/img/idea/2017.1/appIconOk512.png
Type aliases
/help/img/idea/2017.1/appIconOk512.png
Type traits
/help/img/idea/2017.1/appIconOk512.png
User-defined literals
/help/img/idea/2017.1/appIconOk512.png
constexpr specifier
/help/img/idea/2017.1/appIconOk512.png

You can enable the desired C++ standard using CMake CMAKE_CXX_STANDARD variable. For example:

set(CMAKE_CXX_STANDARD 11)

CLion is compatible with libc++ (Clang) and libstdc++ (GCC) Standard Template Libraries (STL).

See Also

Last modified: 19 July 2017