C++17 功能特性 | 提案 | GCC | Clang | MSVC |
inline 变量 | P0386R2 | 7 | 3.9 | 19.12* |
内 联 变 量 的 动 机 起 源 于 David Krauss 的https://wg21.link/n4147提 案, 之 后 由 Hal Finkel 和 Richard Smith在https://wg21.link/n4424中首次提出。
最终被接受的是 Hal Finkel 和 Richard Smith 发表于https: //wg21.link/p0386r2的提案。
inline int num(0);
class MyClass {
static std::string msg;
};
std::string MyClass::msg{"OK"}; // 如 果 被 多 个CPP文 件 包 含 会 导 致 链 接ERROR
// 但可以只在CPP里定义class MyClass {
inline static std::string msg{"OK"}; // 自 从C++17起OK
};
inline MyClass myGlobalObj; // 即 使 被 多 个CPP文 件 包 含 也OKstruct D {
static constexpr int n = 5; // C++11/C++14: 声 明
// 自 从C++17起: 定 义
}struct ThreadData {
inline static thread_local std::string name; // 每 个 线 程 都 有 自 己 的name
};
inline thread_local std::vector cache; // 每 个 线 程 都 有 一 份cache
| 留言与评论(共有 0 条评论) “” |