C++17 内联变量与内联静态变量

标签 c++ c++17

我对 C++17 引入的 inline variable 有点困惑。 内联变量内联静态变量有什么区别?这也会受到范围的影响吗?

inline T var_no_scope;
inline static T static_var_no_scope;

namespace scope {
  inline T var_scope;
  inline static T static_var_scope;
}

任何解释将不胜感激!

最佳答案

在命名空间范围内:

inline static 似乎等同于 static

inline 仅当您在多个翻译单元中定义同一个变量时,变量才有效。由于 static 将变量限制为单个 TU,因此您不能有多个定义。

在类范围内:

inline 只能出现在 static 变量上。

它具有正常的效果,允许您直接在 header 中初始化变量。要么:

struct A
{
    inline static int a = 42;
};

或者:

struct A
{
    static int a;
};

inline int A::a = 42;

在函数范围内:

内联 是不允许的。

关于C++17 内联变量与内联静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515591/

相关文章:

c++ - 双重列表复制构造函数 : How different is it from a Singly List Copy Constructor?

c++ - 为 Qt 项目创 build 置

C++冒泡排序,如何忽略相同的数字

c++ - 多重继承 : cannot instantiate abstract class

c++ - C++ 中的 xvalue 是什么

c++ - 在运算符表达式上下文中纠正重载解析的内置运算符候选的行为

c++ - 在 C++ 中优化二维数组

c++ - 我可以在此示例中使用折叠表达式吗

c++ - 如何简化 std::variant 类类型

c++ - 在 Boost Test 中使用枚举类