C++17: Inline Variables
Before C++17, if your class had any non-const static data members, you had to allocate memory for them. For example, suppose you have the following class definition:
class MyClass { private: static int s_anInt; static std::string s_aString; };
Then your source file should contain the following:
int MyClass::s_anInt = 42; std::string MyClass::s_aString = "Hello World!";
This is annoying.
C++17 now supports inline variables which allow you to write the MyClass definition as follows:
class MyClass { private: static inline int s_anInt = 42; static inline std::string s_aString = "Hello World!"; };
This feature makes it easier to write header only classes that contain non-const static data members.
At the time of this writing, Microsoft Visual C++ 2017 does not yet support inline variables.