c++ - C++11 标准容器是 "final"吗?

标签 c++ stl c++11 std

我们(应该)知道 C++ 标准库容器,包括 std::string,并不意味着继承自。但是,C++98/03 确实允许我们这样做,即使它会导致错误。

既然 final 关键字可用,那些标准库容器是否标记为 final 以防止对它们的不良使用继承?

如果不是,那是为什么?

最佳答案

LWG 在最近于 2012 年 2 月 6 日至 10 日在科纳举行的 session 上讨论了这个问题。我是 LWG issue 2113 .

LWG 决定将 LWG 2113 标记为 NAD(不是缺陷),理由是标准已经明确现有类(如容器和 std::string 不能标记为 final)通过实现。

讨论包括这样一个事实,虽然从这些类派生可能不受欢迎,但在 C++98/03 中这样做显然是合法的。在 C++11 中使其非法会破坏太多代码。

更新

此时,current working draft 中没有库类型。被标记为final

关于c++ - C++11 标准容器是 "final"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298450/

相关文章:

c++ - 从函数返回对象

c++ - std::map 插入或 std::map 查找?

c++ - 在类声明中使用类型定义迭代器的问题

c++ - 不接受静态成员函数作为 constexpr 参数

c++ - 在 C++ 中为虚拟函数禁用动态绑定(bind)(虚拟表创建)

c++ - 有没有简单的方法来检查一个值是否不能安全地由另一种类型呈现?

c++,linux,如何解释 `stat64` 中文件的模式?

c++ - Boost.MultiArray 初学者 : How to get a 4D-Array with dynamic inner-array-sizes?

c++ - 静态类成员的初始化

c++为什么当我不使用内联时链接会失败?