C++ 的僵尸标识符(Zombie identifiers)(截止 C++23)

C++ 的僵尸标识符(Zombie identifiers)(截止 C++23)

  C++ 11 之前,C++ 的世界波澜不惊,但是从 C++ 11 开始突然发力,大量新的语言特性被引入,同时大量旧的内容被淘汰。C++ 版本迭代如此之快,以至于有些内容都还没有见过就已经被淘汰了。正所谓步子迈的太大容易那个什么的,以至于出现了 C++ 11 才引入的内容就在 C++ 17 被删除这样“惨绝人寰”的事情。这里列出了截至 C++ 23 已经或即将要淘汰的东西,有的是语言特性,有的是标准库的内容。这些已经确定被淘汰或即将被淘汰的,但是目前还在各种代码中存在的标识符被成为僵尸标识符。

  被删除的内容通常会先在某个版本被标记为“弃用”,然后在后续的某个版本中被正式移除。这些僵尸标识符如果你都没听说过,那么恭喜,你省事儿了。如果你还在学习 C++,那么这个列表一定要看看,远离这些僵尸标识符,避免惨剧发生在自己身上。

1 C++ 14 删除的内容

(1)gets() 函数(在 C++ 11 被弃用)

2 C++ 17 删除的内容

(1)auto_ptr<> (在 C++ 11 被弃用)
(2)binary_function<> (在 C++ 11 被弃用)
(3)bind1st<>() (在 C++ 11 被弃用)
(4)bind2nd<>() (在 C++ 11 被弃用)
(5)binder1st<> (在 C++ 11 被弃用)
(6)binder2nd<> (在 C++ 11 被弃用)
(7)const_mem_fun_ref_t<> (在 C++ 11 被弃用)
(8)const_mem_fun_t<> (在 C++ 11 被弃用)
(9)const_mem_fun1_ref_t<> (在 C++ 11 被弃用)
(10)const_mem_fun1_t<> (在 C++ 11 被弃用)
(11)get_unexpected() (悲剧,C++ 11 才引入的内容)
(12)mem_fun<>() (在 C++ 11 被弃用)
(13)mem_fun_ref<>() (在 C++ 11 被弃用)
(14)mem_fun_ref_t<> (在 C++ 11 被弃用)
(15)mem_fun_t<> (在 C++ 11 被弃用)
(16)mem_fun1_ref_t<> (在 C++ 11 被弃用)
(17)mem_fun1_t<> (在 C++ 11 被弃用)
(18)pointer_to_binary_function<> (在 C++ 11 被弃用)
(19)pointer_to_unary_function<> (在 C++ 11 被弃用)
(20)ptr_fun<>() (在 C++ 11 被弃用)
(21)random_shuffle<>() (在 C++14 被弃用)
(22)set_unexpected() (在 C++ 11 被弃用)
(23)unary_function<> (在 C++ 11 被弃用)
(24)unexpected() (在 C++ 11 被弃用)
(25)unexpected_handler (在 C++ 11 被弃用)
(26)std::ios_base::io_state (在 C++ 98 被弃用)
(27)std::ios_base::open_mode (在 C++ 98 被弃用)
(28)std::ios_base::seek_dir (在 C++ 98 被弃用)
(29)std::basic_streambuf<CharT,Traits>::stossc (在 C++ 98 被弃用)

3 C++ 20 删除的内容

(1)binary_negate<> (在 C++17 被弃用)
(2)get_temporary_buffer<>() (在 C++17 被弃用)
(3)is_literal_type<> (C++ 11 引入,在 C++17 被弃用)
(4)is_literal_type_v<> (C++ 11 引入,在 C++17 被弃用)
(5)not1<>() (在 C++17 被弃用)
(6)not2<>() (在 C++17 被弃用)
(7)raw_storage_iterator<> (在 C++17 被弃用)
(8)result_of<> (C++ 11 引入,在 C++17 被弃用)
(9)result_of_t<> (C++ 14 引入,在 C++17 被弃用)
(10)return_temporary_buffer<>() (在 C++17 被弃用)
(11)unary_negate<> (在 C++17 被弃用)
(12)uncaught_exception() (在 C++17 被弃用)
(13)is_pod<> (C++ 11 引入,在 C++17 被弃用)
(14)std::function::argument_type (在 C++17 被弃用)
(15)std::function::first_argument_type (在 C++17 被弃用)
(16)std::function::second_argument_type (在 C++17 被弃用)

4 C++ 23 (即将)被删除的内容

(1)declare_no_pointers() (C++ 11 引入)
(2)declare_reachable() (C++ 11 引入)
(3)get_pointer_safety() (C++ 11 引入)
(4)pointer_safety (C++ 11 引入)
(5)undeclare_no_pointers() (C++ 11 引入)
(6)undeclare_reachable<>() (C++ 11 引入)

5 未来可能被删除的

(1)std::aligned_storage (C++ 11 引入,将在 C++ 23 被弃用)
(2)std::aligned_union (C++ 11 引入,将在 C++ 23 被弃用)

关注公众号,与作者互动:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王晓华-吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值